Varsayılan olarak, her RESTORE DATABASE
biri RECOVERY
kurulumla birlikte gelir . 'NORECOVERY' seçenekleri temel olarak SQL Server'a veritabanının daha fazla geri yükleme dosyası beklediğini söyler ( DIFF dosyası ve LOG olabilir) dosyası olabilir ve mümkünse kuyruk günlüğü yedekleme dosyası içerebilir). 'KURTARMA' seçenekleri, tüm işlemleri bitirir ve veritabanının işlem yapmaya hazır olmasını sağlar.
Yani:
- eğer veritabanınız SIMPLE kurtarma modeliyle , DIFF yedeklemeniz olduğunda yalnızca TAM geri yükleme
NORECOVERY
seçeneğiyle gerçekleştirebilirsiniz . Hayır LOG yedekleme izin verilir BASİT kurtarma modeli veritabanı.
- Aksi takdirde, veritabanınız FULL veya BULK-LOGGED kurtarma modeliyle , bir TAM geri yükleme ve ardından
NORECOVERY
seçeneği gerçekleştirebilir, ardından bir DIFF ve ardından da LOG geri yükleme NORECOVERY
gerçekleştirebilirsiniz .RECOVERY
Unutmayın, SON SORGULAMA SORGUSU RECOVERY
SEÇENEK OLMALIDIR . Açık bir yol olabilir ya da olmayabilir. T-SQL terminallerinde durum:
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
REPLACE İLE seçeneği veri kaybına neden olabileceğinden dikkatli kullanılmalıdır
Veya bir TAM ve DIFF yedeklemesi gerçekleştirirseniz, bunu kullanabilirsiniz
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
Elbette , SQL Server'a tamamlanan her% 10'u rapor etmesini bildiren STATS = 10 seçeneğiyle bir geri yükleme gerçekleştirebilirsiniz .
İsterseniz, süreci gözlemleyebilir veya gerçek zamanlı sorguda geri yükleyebilirsiniz. Aşağıdaki gibi:
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
Umarım bu yardım.
DROP DATABASE db
SSMS üzerinden komut verdim ve çalıştı (daha önce komutları vermek için başka bir makineden SSMS kullanıyordum). Diğer çözümlerin de işe yarayacağını tahmin ediyorum.