Friday, August 5, 2016

MSSQL: Reduce log file of SQL Server

(Anhgolden's Blog) - Dung lượng file SQL DB ngày càng tăng, trong khi dữ liệu chỉ có vài GB, nhưng file Log thì hàng trăm GB (gấp nhiều lần file dữ liệu).
Giả sử DB là Dbname, sẽ có 2 file:
- File data: Dbname.mdf
- File log: Dbname_log.ldf

Nay muốn giảm dung lượng file log (Dbname_log.ldf), xin chia sẻ dùng Sql Script như sau:

===
USE Dbname;
GO

-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE Dbname
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (Dbname_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE Dbname
SET RECOVERY FULL;
GO
===

Kết quả sau khi thực hiện:
==
Diễn giải:

B1: SET RECOVERY SIMPLE
Có 3 chế độ Recovery trong SQL Server: FULL, SIMPLE và BULK LOGGED

Chế độ mặc định là FULL.

Khi ở chế độ này, bất kì một transaction nào, kể cả khi đã commit cũng đều được lưu trong LOG, do đó có thể dựa vào những transaction này để “quay lui (rollback)” DB về bất kì thời điểm nào. Vì thế với những DB có Transaction nhiều, DATA ít thì file LOG vẫn có thể rất lớn.

SET RECOVERY về SIMPLE: ở chế độ này, sau khi transaction được COMMIT sẽ tự động xóa. Do vậy File LOG của DB ở chế độ này thường rất nhỏ.

B2: DBCC SHRINKFILE (Dbname_Log, 1)

Dùng DBCC SHRINKFILE để SHRINK file log xuống còn 1 Mb
Nếu không set Recovery về SIMPLE thì sẽ ko thể xóa bỏ hết các transaction đã được COMMIT.
SHRINKFILE chỉ thu dọn và sắp xếp và phân bố lại dữ liệu, bỏ các vùng trống để giải phóng bộ nhớ, chứ không phải xóa dữ liệu. Vì thế ở chế độ FULL, SHRINKFILE hầu như ko tác dụng, hoặc nếu có thì file LOG dung lượng giảm đi ko đáng kể.

B3: Sau đó SET RECOVERY về lại FULL

(Source: Sưu tầm)
Read More »

Friday, July 1, 2016

Mssql: Cannot Restore DB because it is in use by this session

(Anhgolden's Blog) - Khi Backup mssql db thì OK, nhưng khi Restore thì hệ thống báo lỗi:

Restore failed for Server 'Server_Name'. (Microsoft.SqlServer.Smo)
System.Data.SqlClient.SqlError: RESTORE cannot process database 'DbName' because it is in use by this session. It is recommended that the master database be used when performing this operation.

Nguyên nhân là không thể Restore db khi login bằng User mà User đang set db default là db muốn Restore.

Do đó, cần thay đổi chỉ định db default cho User thực hiện.

B1: Security >> Logins >> Chọn User (đang login db) >> Right Click Properties.

B2: Change Default db.

Read More »

Thursday, May 12, 2016

Blog: Chèn 5 Stars Rating vào Blog

(Anhgolden's Blog) - Sưu tầm

Xin chia sẻ cách thực hiện chèn công cụ Rating vào Blog.

Sử dụng công cụ: http://www.graddit.com/ratings-widget

Bước 1: Mở Blog template - Edit HTML

Tìm
</head>
Chèn đoạn code sau ở phía trên:
<!-- Rating Start1 -->
<link href='http://static.graddit.com/css/graddit.css' rel='stylesheet' type='text/css'/>
<!-- Rating End1 -->


Tìm
    <div class='post-header'>
    <div class='post-header-line-1'/>

Chèn đoạn code sau ở bên dưới:
<!-- Rating Start2 -->

<b:if cond='data:blog.pageType != &quot;static_page&quot;'><div expr:id='&quot;labels_&quot; + data:post.id' style='display: none; visibility: hidden;'><b:if cond='data:post.labels'><b:loop values='data:post.labels' var='label'><data:label.name/>,</b:loop></b:if></div>Rate this posting: <div class='ffbs_rate' expr:id='data:post.id'>{[[&#39;&lt;img src=&quot;http://static.graddit.com/img/star.png&quot;/&gt;&#39;]]}</div><div class='ffbs_stats' expr:id='&quot;ffbs_stats_&quot; + data:post.id'/><script expr:src='&quot;http://www.graddit.com/rate/eng/5/&quot; + data:post.id + &quot;?id=&quot; + data:post.id + &quot;&amp;stats=ffbs_stats_&quot; + data:post.id + &quot;&amp;labels=labels_&quot; + data:post.id + &quot;&amp;info=info-&quot; + data:post.id + &quot;&amp;info_delay=2&amp;url=&quot; + data:post.url + &quot;&amp;class_star=ffbs_star_img&amp;class_star_set=ffbs_star_img_set&amp;class_star_vote=ffbs_star_img_vote&amp;views=yes&amp;votes=yes&amp;average=yes&quot;' type='text/javascript'/></b:if>

<!-- Rating End2 -->
Read More »

Wednesday, May 4, 2016

Access: The search key was not found in any record


(Anhgolden's Blog) - Khi import data từ Excel và Access, bị lỗi như sau:
"The search key was not found in any record". Lưu ý kiểm tra lại Header Row của file data Excel.

Thông thường có Cột trống (không tên) hoặc Tên Cột có ký tự trắng (trống) ở trước (prefix).
Read More »

Tuesday, April 19, 2016

SQL Server: Tổng hợp

(Anhgolden's Blog) - Tổng hợp

1. Primary Key Vs Unique:

- Primary Key (khóa chính) bản thân đã bao gồm tính Unique (dữ liệu duy nhất và không trống).
- 1 Table chỉ có 1 Primary Key, nhưng có thể có nhiều field Unique.

2. Primary Key Vs Index:

- Khi thiết lập Primary Key hay Index dữ liệu đã được sắp xếp (Sorting), giúp cho việc truy vấn dữ liệu được nhanh chóng.
- Tuy nhiên Primary Key sẽ check tính duy nhất Unique và 1 table chỉ có 1 Primary key, còn Index có thể thêm thuộc tính Unique (On/Off) và 1 table có thể có nhiều Index cho nhiều field.

3. Group by Vs Distinct:

- Group by và Distinct có cùng điểm chung là loại bỏ dòng dữ liệu trùng. Tuy nhiên, Group by được sử dụng khi có yếu tố tính gộp.

Ví dụ:

Example of DISTINCT:
SELECT DISTINCT Employee, Rank
FROM Employees

Example of GROUP BY:
SELECT Employee, Rank
FROM Employees
GROUP BY Employee, Rank

Example of GROUP BY with aggregate function:
SELECT Employee, Rank, COUNT(*) EmployeeCount
FROM Employees
GROUP BY Employee, Rank
Read More »

Friday, April 8, 2016

Excel: Tìm phần tử cuối của Mảng

(Anhgolden's Blog) - Trong trường hợp muốn tìm phần tử cuối của mảng (bao gồm nhiều phần tử trống), ta sử dụng công thức sau:

=Lookup(1,1/Len(B2:F2),B2:F2)

Kết quả: fds

Diễn giải: Tìm ([phần tử],[mảng cần tìm],[trả kết quả của mảng tương ứng])

Xem thêm: cách khác

1) =Lookup(1,1/(B2:F2<>""),B2:F2)

2)=Lookup(1,1/(NOT(ISBLANK(B2:F2))),B2:F2)
Read More »

Tuesday, March 29, 2016

Cannot Delete or Update Records from Table linked from MS SQL Server

(Anhgolden's Blog) - Khi Import Link Table từ MS SQL Server, khi muốn Delete hoặc Update Record trong Table Link, ta thường bị báo lỗi: Table Uneditable.

Phương án giải quyết: Table trong MS SQL Server (muốn Link đến Access) phải được đặt Primary Key.

Xem thêm: https://www.fmsinc.com/microsoftaccess/query/snytax/delete-query.html
Read More »