Di Chuyển TempDB Sang Đĩa Khác

Vũ Huy Tâm

Tempdb là một database hệ thống của SQL Server. Nó dùng để chứa các kết quả trung gian khi câu lệnh đang thực hiện, thực hiện sắp xếp (với câu lệnh có ORDER BY), chứa các bảng tạm, biến bảng… Khi server bận bịu với nhiều yêu cầu truy vấn đồng thời thì kích thước của tempdb có thể trở nên rất lớn. Vị trí mặc định của các file database của tempdb là ở thư mục chứa các file chương trình SQL Server. Bạn nên chuyển chúng sang một ổ đĩa riêng để tránh hiện tượng các file này lớn lên chiếm hết không gian đĩa. Để chuyển các file sang vị trí mới bạn hãy làm theo các bước sau:
Bước 1: Kiểm tra tên file và vị trí hiện thời

USE TempDB
GO
EXEC SP_HELPFILE
GO

kết quả sẽ tương tự như sau:

name     fileid  filename
tempdev  1       C:\Program Files\Microsoft...\tempdb.mdf
templog  2       C:\Program Files\Microsoft...\tempdb.ldf

Tên mặc định cho database file là tempdev và cho log file là templog (đây là tên logic, không phải là tên file trên đĩa). Ghi lại thư mục hiện tại cho hai file này.
Bước 2: Chuyển các file này sang thư mục mới

USE master
GO
ALTER DATABASE tempdb MODIFY FILE
(NAME = tempdev, FILENAME = 'd:\data\tempdb.mdf')
GO
ALTER DATABASE tempdb MODIFY FILE
(NAME = templog, FILENAME = 'd:\log\templog.ldf')
GO

Bạn có thể chạy lại thủ tục sp_helpfile ở bước 1 để kiểm tra xem các file đã có vị trí mới.

Bước 3: Restart lại SQL Server, các file mới sẽ được tạo và sử dụng. Trở lại thư mục ở bước 1 và xóa hai file ở đó đi. Vì mỗi lần SQL Server khởi động nó sẽ tạo lại tempdb, nên bạn không cần bận tâm copy hai file từ thư mục cũ sang vị trí mới, chỉ việc xóa chúng đi để giải phóng chỗ.




Tags: , , , ,

1 Comment
Posted on 11/7/2010 | Categories: Database Administration

Các bài viết tương tự

Comments
  • nhung (10/07/2017 5:15 am)

    Hiện tại file tempdb bên mình đang chiếm dung lượng khá lớn làm ảnh hưởng đến các tool liên quan

    Cho mình hỏi, chuyện gì sẽ xảy ra nếu mình xóa file đó đi mà ko backup lại
    Mình nghĩ đó là file tempdb thôi, xóa đi thì hệ thống sẽ tạo lại khi phát sinh nên ko cần backup

    Bạn cho mình ý kiến góp ý với nhé

    Thanks very much!!!!!

Leave a Reply

Hướng dẫn: Để nhập mã T-SQL bạn dùng thẻ <pre lang="tsql"> và </pre>.
Ví dụ: <pre lang="tsql">SELECT * FROM MyTable</pre>