PCのローカルSQL Server Developer Edition 12.0.2000.8に開発用のデータベースを設定しようとしています。ネットワーク経由で送信された完全なデータベースバックアップと個別のトランザクションログのみのバックアップファイルが利用可能です。
フルバックアップから復元しようとすると、しばらくして(おそらく1時間程度、データベースのサイズは270 GBになります)、エラーが発生します。
System.Data.SqlClient.SqlError:データベース 'データベース名'のログの処理中にエラーが発生しました。可能であれば、バックアップから復元します。バックアップが利用できない場合は、ログを再構築する必要があるかもしれません。 (Microsoft.SqlServer.SmoExtended)
この後、dbは「Restoring ..」状態になります。
私は( this の質問からそれを得た)のようなものを実行したかった
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;
それに対して、しかし、データベースが 'Restoring ..'状態にあるため、当然のことながらできません。データベースで復元プロセスを再起動すると、同じエラーメッセージが表示され、削除して再度復元しても、あまり役に立ちませんでした。
どうすればデータベースを稼働させることができますか?トランザクションの一貫性は私には関係ありません。
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によって提案されたクエリの結果
データベースのシャットダウン時に開いているトランザクション/ユーザーがあったか、データベースにチェックポイントが発生しなかったか、データベースが読み取り専用だったため、ログを再構築できません。このエラーは、ハードウェアまたは環境の障害が原因でトランザクションログファイルが手動で削除されたか失われた場合に発生する可能性があります。
チャットに移動したコメントから、OPからのこのメモ:
GUIで接続してみました。 .mdfファイルを選択したとき、SSMSはデータベースが3つのファイル(データ、インデックス、ログ)で構成されていることを識別しましたが、WITH MOVEを復元しているにもかかわらず、ファイルパスに関するデータベースの詳細が間違っていると言っていました。古いログ/データ/インデックスファイルを指定しただけです。データベースはオンラインです。