デフォルトでは、すべてRESTORE DATABASE
にRECOVERY
セットアップが付属しています。'NORECOVERY'オプションは、基本的にデータベースが追加の復元ファイル(DIFFファイルとLOGの可能性があります)を待機していることをSQL Serverに通知しますファイルの可能性があり、可能であればテールログバックアップファイルを含めることができます)。'RECOVERY'オプションは、すべてのトランザクションを終了し、データベースがトランザクションを実行できるようにします。
そう:
- データベースがSIMPLE復旧モデルで設定されている場合、DIFFバックアップがある場合は、オプション付きの完全復元のみを実行でき
NORECOVERY
ます。SIMPLE復旧モデルデータベースでは、LOGバックアップは許可されません。
- それ以外の場合、データベースがFULLまたはBULK-LOGGED復旧モデルで設定されている場合は、FULLリストアの後に
NORECOVERY
オプションを実行し、次にDIFFの後にを実行し、NORECOVERY
最後にオプションを指定してLOGリストアを実行RECOVERY
できます。
覚えておいて、LASTはQUERYが持っていなければならないRESTORE RECOVERY
OPTIONを。それは明示的な方法かそうでないかもしれません。T-SQLの場合、状況は次のとおりです。
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
データの損失につながる可能性があるため、WITH REPLACEオプションは注意して使用する必要があります
または、FULLおよびDIFFバックアップを実行する場合、これを使用できます
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
もちろん、オプションSTATS = 10で復元を実行して、SQL Serverに10%完了ごとに報告するように指示できます。
必要に応じて、プロセスを観察したり、リアルタイムベースのクエリで復元したりできます。次のように:
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
この助けを願っています。
DROP DATABASE db
SSMSを介してコマンドを発行し、それが機能しました(以前は別のマシンからSSMSを使用してコマンドを発行していました)。他の解決策もうまくいくと思います。