Khi bạn cần chuyển database file (data file hoặc log file) sang ổ cứng khác để giải phóng không gian đĩa hiện tại, một cách hiển nhiên bạn có thể làm là backup database đó hoặc lấy file backup gần đây nhất, và restore lại trên cùng server với lựa chọn đặt file sang ổ đĩa mới. Bài viết Di Chuyển File Khi Khôi Phục Dữ liệu mô tả chi tiết cách làm này. Tuy nhiên trong suốt quá trình restore, database sẽ không truy cập được. Nếu database lớn, thời gian restore sẽ kéo dài gây gián đoạn sử dụng cho người dùng. Một cách làm đơn giản hơn là đặt database thành offline và copy file sang thư mục mới, như ví dụ dưới đây:
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE --đóng hết các connection tới database
ALTER DATABASE MyDB SET OFFLINE --đặt database thành offline
ALTER DATABASE MyDB MODIFY FILE
(
Name = MyDB,
Filename = ''N:\DATA\MyDB.MDF'' --Giả dụ N: là ổ đĩa mới
) ALTER DATABASE MyDB MODIFY FILE
(
Name = MyDB,
Filename = ''N:\DATA\MyDB.LDF'' --Giả dụ N: là ổ đĩa mới (file log)
)
Điểm quan trọng nhất trong đoạn lệnh trên là lệnh ALTER DATABASE thứ ba, lệnh này cập nhật system catalog để báo cho hệ thống biết file giờ nằm ở đâu. Bước tiếp theo bạn cần copy file MyDB.MDF từ thư mục hiện tại sang thư mục mới N:\DATA\, bước này nằm ngoài SQL Server và bạn cần dùng windows để copy. Sau khi copy xong, bạn quay lại Management Studio và chạy hai lệnh:
ALTER DATABASE MyDB SET ONLINE --đặt database trở lại online
ALTER DATABASE MyDB SET MULTI_USER --đặt trở lại chế độ nhiều người dùng
Đến đây bạn có thể xóa file MyDB.MDF ở folder cũ và quá trình như vậy là hoàn tất.
Nguồn: sqlviet.com