web-dev-qa-db-ja.com

バックアップまたは復元が中止されました-何が起こりますか?

use master
go
ALTER DATABASE Apcore SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

RESTORE DATABASE Apcore
FROM DISK=N'C:\Backups\QG-V-SQL-TS$AIFS_DEVELOPMENT_APCore_FULL_20180909_230034.bak'
WITH  FILE = 1,  
MOVE N'APCoreDataPrimary' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreDataPrimary.mdf',
MOVE N'APCoreData1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreData1.ndf',
MOVE N'APCoreData_nonclusteredIndexes' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreData_nonclusteredIndexes.ndf',  
MOVE N'APCoreLog_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreLog_log.ldf',  
recovery,  NOUNLOAD,  REPLACE,  STATS = 1

enter image description here

開発者のマシンでデータベースを復元しているときに、上記のエラーが発生しました。

私がそれをした方法は:

  • 最初に、権限、インデックス、トリガー、シノニムなどについては心配しなかったと言います。
  • バックアップファイル(1 GB未満)をライブからローカルマシンにコピーしました
  • restore filelestonly大丈夫です
  • 毎秒データベースを使用しようとするサービスがいくつかあるため、データベースをシングルユーザーモードに設定する必要がありました。
  • 上記のスクリプトを準備し、それを実行すると、そのエラーメッセージが表示されました。

どうなり得るか?

enter image description here

2

ほとんどの場合、サーバーに接続したときにコマンドタイムアウトを定義しました。おそらくそれについて考えずに。とにかく、クライアント(SSMS)は指定された時間が経過するとクエリをキャンセルし、奇妙なエラー-2を返します(これはサーバーによってスローされたのではなく、クライアントがメッセージを生成します)。下の図のように1の「実行タイムアウト」に接続してこれをテストし、以下のSQLを実行しました。

enter image description here

SELECT 'before'
WAITFOR DELAY '00:00:05'
SELECT 'after'

ゼロ(0)は無期限を意味します。

5
Tibor Karaszi