Di Chuyển File Khi Khôi Phục Dữ liệu

Vũ Huy Tâm

Khi bạn cần khôi phục (restore) database từ file backup từ một server khác, sự phân bố file trên server kia có thể khác với server này và khi restore bạn cần lưu ý đến điều đó. Ví dụ, trên server nguồn (server 1) data file nằm ở ổ E: và log file nằm ở ổ F:; trong khi server mà bạn đang restore lên (server 2) không có ổ E: và F: mà thay vào đó data file được chứa ở ổ P: và log file ở ổ Q:. Khi đó lệnh RESTORE thông thường sẽ gây ra thông báo lỗi:

RESTORE FILELISTONLY
FROM DISK='\\Server1\E$\Backup\TestDB.bak' 
--kết quả
--LogicalName	PhysicalName
--TestDB	E:\Data\TestDB.mdf
--TestDB_log	F:\Log\TestDB_log.LDF
 
RESTORE DATABASE TestDB
FROM DISK='\\Server1\E$\Backup\TestDB.bak'


Msg 5133, Level 16, State 1, Line 1
Directory lookup for the file “E:\Data\TestDB.mdf” failed with the operating system error 3(The system cannot find the path specified.).
Msg 3156, Level 16, State 3, Line 1
File ‘TestDB’ cannot be restored to ‘E:\Data\TestDB.mdf’. Use WITH MOVE to identify a valid location for the file.
Msg 5133, Level 16, State 1, Line 1
Directory lookup for the file “F:\Log\TestDB_log.LDF” failed with the operating system error 2(The system cannot find the file specified.).
Msg 3156, Level 16, State 3, Line 1
File ‘TestDB_log’ cannot be restored to ‘F:\Log\TestDB_log.LDF’. Use WITH MOVE to identify a valid location for the file.
Msg 3119, Level 16, State 1, Line 1
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

Lỗi dài dòng nhưng tóm lại là nó phàn nàn là không thể restore data file vào ổ E và log file vào ổ F như yêu cầu, và gợi ý dùng “WITH MOVE” để chọn địa điểm khác. Cách khắc phục là bạn đưa lựa chọn “WITH MOVE” vào lệnh RESTORE và cung cấp địa điểm thích hợp:

RESTORE DATABASE TestDB
FROM DISK='\\Server1\E$\Backup\TestDB.bak' 
WITH MOVE 'TestDB' TO 'P:\Data\TestDB.mdf',
MOVE 'TestDB_log' TO 'Q:\Log\TestDB_log.ldf'



Tags: , ,

0 Comments
Posted on 13/8/2013 | Categories: Database Administration

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

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>