0

差分バックアップからデータベースを復元する際に問題が発生しています。ここではデータベースに適用する私も、最近でLSN 81125000000059600297、で SQL Server 2008の差分バックアップ。 SSMSを介して復元することはできますが、Transact SQLを使用して復元することはできません

DROP DATABASE DBName_delta 
GO 
BACKUP DATABASE DBName TO DISK = 'E:\Fullbak1.bak' 
GO 
RESTORE FILELISTONLY FROM DISK = 'E:\Fullbak.bak' 
GO 
RESTORE DATABASE DBName_delta 
    FROM DISK='E:\Fullbak.bak' 
    WITH MOVE 'DBName_Data' TO 'E:\DBData\DBName_delta.mdf', 
    MOVE 'DBName_Image_Data' TO 'E:\DBData\DBName_delta_Image_Data.mdf', 
    MOVE 'DBName_Log' TO 'D:\DBLog\DBName_delta.ldf', 
    NORECOVERY 

--Made Some changes in the database 
BACKUP DATABASE DBName 
    TO DISK = 'E:\DiffBak1.TRN' 
    WITH DIFFERENTIAL 
GO 

--Made Some more changes in the database  
BACKUP DATABASE DBName 
    TO DISK = 'E:\DiffBak2.TRN' 
    WITH DIFFERENTIAL 
GO 

RESTORE FILELISTONLY FROM DISK = 'E:\DiffBak1.TRN' 
GO 

RESTORE LOG DBName_delta FROM DISK='E:\DiffBak1.TRN' WITH NORECOVERY 
GO 

メッセージ4305、レベル16、状態1、行2
このバックアップセットのログが開始

を行っ手順は次のとおりです。 LSN 81121000000116200001を含む以前のログバックアップを復元できます。

レベル16、状態1、行2
RESTORE LOGは異常終了しています。

RESTORE FILELISTONLY FROM DISK = 'E:\DiffBak2.TRN' 
GO 
RESTORE LOG DBName_delta FROM DISK='E:\DiffBak2.TRN' WITH STANDBY = 'c:\undo.ldf' 
GO 

しかし、私は同じE復元しようとしたとき:WITH NORECOVERYオプションを使用して、SSMSを通じて\ DiffBak1.TRNを、それがデータベースを復元し、再び私が使用して同じファイルのリストアを実行することができましたTransact SQL私はここに何かを逃していますかこれはRESTORE DATABASEと関係がありますか?私たちの間に何もログがないことは間違いないと確信しています。どんな助けでも大歓迎です。

答えて

0

私はこれを理解することができます。私が言及したように、私はSSMSウィザードを通して差分データベースを復元することができました。私はウィザードからスクリプトを取り出して、クエリの違いを見つけました。

私は

RESTORE DATABASE [DBrel02t_delta] FROM DISK = N'E:\DiffBak1.TRN' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10 
GO 

RESTORE LOG DBName_delta FROM DISK='E:\DiffBak1.TRN' WITH NORECOVERY 
GO 

は、私は、コードを変更した以下のコードを使用していたこれは、問題を解決しました。以下のクエリを使用して、バックアップのlsnの詳細を確認します。

RESTORE HEADERONLY FROM DISK = N’<backup file>’; 
+0

これは、ファイルパスに英語以外の文字が含まれていることを意味します。 'N'接頭辞は文字列がUnicodeであることを意味します。すべての文字が英語の場合、これは必要ありません。 –

+0

正確ではありません。ログを復元する代わりに、2番目のコードがデータベースを復元していました。それが違いを生み出しました。私はステップをスクリプト化し、その違いを見つけました。 –

関連する問題