SQL Server dbを完全バックアップから復元できない、ログ処理が失敗、データベースが「復元中」状態


14

PCのローカルSQL Server Developer Edition 12.0.2000.8に開発目的でデータベースを設定しようとしています。データベース全体のバックアップと、ネットワーク経由で送られてきたトランザクションログ専用のバックアップファイルが用意されています。

完全バックアップから復元しようとすると、しばらくして(おそらく1時間以内に、データベースのサイズが〜270 GBになります)、エラーが発生します:

System.Data.SqlClient.SqlError:データベース 'database name'のログの処理中にエラーが発生しました。可能であれば、バックアップから復元します。バックアップが利用できない場合、ログを再構築する必要があるかもしれません。(Microsoft.SqlServer.SmoExtended)

この後、データベースは「復元中」状態になります。

私は次のようなものを実行したかった(この質問からそれを得た)

ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;

DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;

それに対して、データベースが「復元中..」状態にあるため、当然のことながらできません。復元プロセスを再起動しても同じエラーメッセージが表示され、ドロップと復元は再び役に立ちませんでした。

データベースを起動して動作させるにはどうすればよいですか?トランザクションの一貫性は私には関係ありません。

SSMS自動生成復元スクリプト:

  USE [master]
  RESTORE DATABASE [database_name] FROM  DISK = N'D:\database_name.bak' WITH  FILE = 1,
  MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
  MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
  MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
  NOUNLOAD,
  STATS = 5

  GO

@Craig Efreinによって提案されたクエリの結果

データベースがシャットダウンされたとき、データベースにチェックポイントが発生しなかった、またはデータベースが読み取り専用であったときに、開いているトランザクション/ユーザーがいたため、ログを再構築できません。このエラーは、ハードウェアまたは環境の障害によりトランザクションログファイルが手動で削除または失われた場合に発生する可能性があります。


コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
ポールホワイトモニカーを復活

回答:


2

チャットに移動したコメントから、OPからのこのメモ:

GUIで接続してみました。.mdfファイルを選択すると、SSMSはデータベースが3つのファイル(データ、インデックス、ログ)で構成されていることを特定しましたが、WITH MOVEで復元しているにもかかわらず、ファイルパスに関するデータベースの詳細が間違っていると言っていました!だから、古いログ/データ/インデックスファイルでそれらをポイントしました...データベースはオンラインです。


-3

シングルユーザーモードに変更して復元します。

例:
最初の復元では、NORECOVERYオプションを使用するため、追加の復元を実行できます。2番目のコマンドは、トランザクションログを復元し、エンドユーザーが使用できるようにデータベースをオンラインにします。

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.BAK'
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.TRN'
WITH RECOVERY
GO

1
質問は単一のRESTORE DATABASEステートメントを参照しており、個別のトランザクションログの復元は行われていません。ソースデータベースやバックアップファイルが破損している可能性があります。
ブライアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.