web-dev-qa-db-ja.com

データベース「DBName」のログの末尾がバックアップされていません

次のクエリを使用してデータベースを復元しようとしました。

ALTER DATABASE [DatabaseName] SET Single_User WITH Rollback Immediate GO
RESTORE DATABASE DatabaseName FROM DISK = 'C:\DBName-Full Database Backup'
ALTER DATABASE [DatabaseName] SET Multi_User GO

しかし、データベースを復元する代わりに、このエラーが発生しています:

メッセージ3159、レベル16、状態1、行2

データベース「DatabaseName」のログの末尾はバックアップされていません。失いたくない作業がログに含まれている場合は、BACKUP LOG WITH NORECOVERYを使用してログをバックアップします。 RESTOREステートメントのWITH REPLACEまたはWITH STOPAT節を使用して、ログの内容を上書きするだけです。メッセージ3013、レベル16、状態1、行2 RESTORE DATABASEが異常終了しています。

39
tereško

表示されるエラーメッセージは、既存のデータベースまたはログを気にしない場合に実行する必要があることを正確に示しています。

RESTORE DATABASE DAtabaseName FROM DISK = 'C:\DBName-Full Database Backup' 
WITH REPLACE

SQL Server Management Studio([タスク]> [復元])では、WITH REPLACEオプションは、左側の[オプション]ページを開き、[既存のデータベースを上書きする]にチェックマークを付けます。

91
tomfanning

Management Studioを使用している場合、これは機能するはずです。

enter image description here

22
Adil Malik

または、データベース復旧モデルをSimpleではなくFullに変更できます。

  1. データベースを右クリック
  2. properties-> optionを選択します
  3. 変化する recovery modelからsimple

その後、あなたが書いたものはエラーを生成することなく動作するはずです。

うまくいきました。

3
catcher

または、データベース復旧モデルを「フル」ではなく「シンプル」に変更できます。

データベースを右クリックして、「プロパティ」、「オプション」を選択し、「復旧モデル」を「シンプル」に変更します。

その後、あなたが書いたものはエラーを生成することなく動作するはずです。

2

BACKUP LOG WITH NORECOVERYを使用して、失いたくない作業が含まれているログをバックアップします。

ログの内容を上書きするには、RESTOREステートメントのWITH REPLACEまたはWITH STOPAT句を使用します。

本当に、それが答えです。そこに、メッセージで。何をしたいですか?尻尾をバックアップするので、失われませんか?バックアップされなかったログを置き換えますか?あなたの電話。

1
Remus Rusanu