Secara default, setiap RESTORE DATABASE
dilengkapi dengan RECOVERY
pengaturan. Opsi 'NORECOVERY', pada dasarnya memberitahu SQL Server bahwa database sedang menunggu lebih banyak file restore (bisa berupa file DIFF dan LOG file dan, dapat menyertakan file cadangan tail-log, jika mungkin). Opsi 'PEMULIHAN', selesaikan semua transaksi dan biarkan database siap melakukan transaksi.
Begitu:
- jika basis data Anda diatur dengan model pemulihan SEDERHANA , Anda hanya dapat melakukan opsi pengembalian LENGKAP
NORECOVERY
, ketika Anda memiliki cadangan DIFF . Tidak ada cadangan LOG yang diizinkan dalam SIMPLE basis data model pemulihan .
- Jika tidak, jika database Anda diatur dengan model pemulihan FULL atau BULK-LOGGED , Anda dapat melakukan pengembalian LENGKAP diikuti oleh
NORECOVERY
opsi, kemudian melakukan DIFF diikuti oleh NORECOVERY
, dan, akhirnya, lakukan pengembalian LOG dengan RECOVERY
opsi.
Ingat, THE RESTORE TERAKHIR QUERY HARUS RECOVERY
MEMILIH . Bisa dengan cara eksplisit atau tidak. Dalam term T-SQL, situasinya:
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
DENGAN opsi REPLACE harus digunakan dengan hati-hati karena dapat menyebabkan kehilangan data
Atau, jika Anda melakukan cadangan FULL dan DIFF, Anda dapat menggunakan ini
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
Tentu saja, Anda dapat melakukan pengembalian dengan opsi STATS = 10 yang memberitahu SQL Server untuk melaporkan setiap 10% selesai.
Jika Anda suka, Anda dapat mengamati proses atau mengembalikan dalam kueri berbasis waktu nyata. Sebagai berikut:
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
Semoga bantuan ini.
DROP DATABASE db
perintah melalui SSMS dan berhasil (sebelumnya saya menggunakan SSMS dari komputer lain untuk mengeluarkan perintah). Saya menduga solusi lain akan berhasil juga.