Theo mặc định, mọi RESTORE DATABASE
đi kèm với RECOVERY
thiết lập. Các tùy chọn 'BÌNH THƯỜNG', về cơ bản cho SQL Server biết rằng cơ sở dữ liệu đang chờ thêm các tệp khôi phục (có thể là tệp DIFF và LOG tệp và, có thể bao gồm tệp sao lưu nhật ký đuôi, nếu có thể). Các tùy chọn 'THU HỒI', hoàn thành tất cả các giao dịch và để cơ sở dữ liệu sẵn sàng thực hiện các giao dịch.
Vì thế:
- nếu cơ sở dữ liệu của bạn được thiết lập với mô hình khôi phục SIMPLE , bạn chỉ có thể thực hiện khôi phục ĐẦY ĐỦ với
NORECOVERY
tùy chọn, khi bạn có bản sao lưu DIFF . Không cho phép sao lưu LOG trong cơ sở dữ liệu mô hình phục hồi SIMPLE .
- Mặt khác, nếu cơ sở dữ liệu của bạn được thiết lập với mô hình khôi phục FULL hoặc BULK-LOGGED , bạn có thể thực hiện khôi phục FULL theo sau là
NORECOVERY
tùy chọn, sau đó thực hiện DIFF theo sau NORECOVERY
và cuối cùng, thực hiện khôi phục LOG với RECOVERY
tùy chọn.
Hãy nhớ rằng, NHÀ HÀNG CUỐI CÙNG RECOVERY
NHIỀU PHẢI CÓ TÙY CHỌN . Nó có thể là một cách rõ ràng hoặc không. Trong nhiệt độ của T-SQL, tình huống:
1.
USE [master]
GO
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak WITH FILE = 1, [REPLACE],NOUNLOAD,
RECOVERY -- This option could be omitted.
GO
Tùy chọn REPLACE phải được sử dụng một cách thận trọng vì nó có thể dẫn đến mất dữ liệu
Hoặc, nếu bạn thực hiện sao lưu FULL và DIFF, bạn có thể sử dụng cái này
USE [master]
GO
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1,
NOUNLOAD,NORECOVERY
GO
RESTORE DATABASE Database_name
FROM DISK =N'\\path_of_**diff**backup_file.bak' WITH FILE = 1,
NOUNLOAD, RECOVERY
GO
2. USE [master]
GO
-- Perform a Tail-Log backup, if possible.
BACKUP LOG Database_name
GO
-- Restoring a FULL backup
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1,
NOUNLOAD,NORECOVERY
GO
-- Restore the last DIFF backup
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_DIFF_backup_file.bak' WITH FILE = 1,
NORECOVERY,NOUNLOAD
GO
-- Restore a Log backup
RESTORE LOG Database_name
FROM DISK = N'path_of_LOG_backup_file.trn' WITH FILE = 2,
RECOVERY, NOUNLOAD
GO
Tất nhiên, bạn có thể thực hiện khôi phục với tùy chọn STATS = 10 yêu cầu SQL Server báo cáo cứ sau 10% hoàn thành.
Nếu bạn thích, bạn có thể quan sát quá trình hoặc khôi phục trong truy vấn dựa trên thời gian thực. Như sau:
USE[master]
GO
SELECT session_id AS SPID, command, a.text AS Query, start_time, percent_complete, dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time
FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a
WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')
GO
Hy vọng điều này giúp đỡ.
DROP DATABASE db
lệnh thông qua SSMS và nó đã hoạt động (trước đó tôi đã sử dụng SSMS từ một máy khác để phát lệnh). Tôi đoán các giải pháp khác cũng sẽ làm việc.