スタンバイモードでのトランザクション ログのリストア時にエラー 9004 が発生する事象について

 

 

今後、修正予定となっている問題について、ご紹介いたします。
なお、本記事は、サポート技術情報(KB)が公開されるまでの間に本問題をご案内する意図で掲載しております。

事象

スタンバイモードでトランザクション ログのリストア時にエラー 9004 、状態6 が発生し、リストアに失敗することがあります。
ログ配布をスタンバイモードで構成している場合は、セカンダリでのリストアジョブでエラー 9004 が発生します。
(※ ログ配布を構成していない場合でも、トランザクション ログの復元時に、スタンバイモード(RESTORE LOG WITH STANDBY)を実行する場合は本事象が発生することがあります。)

ログ出力例
2017-07-29 12:05:02.68 spid65      エラー: 9004、重大度: 16、状態: 6。
2017-07-29 12:05:02.68 spid65      An error occurred while processing the log for database 'Database_name'.  If possible, restore from backup. If a backup is not available, it might be necessary to rebuild the log.

 

原因

製品の問題により、稀なタイミングで、スタンバイモードでトランザクション ログのリストア時に、エラー 9004、状態 6 のエラーが発生することが SQL Server 2014 以降で確認されております。

※ 現時点では、SQL Server 2014 は、SQL Server 2014 SP2 CU10 に修正が含まれています。SQL Server 2016、SQL Server 2017 の将来の更新プログラムで、修正が計画されています。

SQL Server 2014 SP2 用の累積的な更新プログラム 10 FIX 断続的な 9004 エラー 2014 年の SQL Server のスタンバイ モードを使用してバックアップから復元するとき ※機械翻訳

事象発生後の対処

ログ配布を一度、解除し、現在のプライマリ データベースの完全バックアップをリストアし、ログ配布を再構成します。

[参考情報]
ログ配布構成からのセカンダリ データベースの削除 (SQL Server) ログ配布構成へのセカンダリ データベースの追加 (SQL Server)

対策

トランザクション ログの復元時に、スタンバイモード(RESTORE LOG WITH STANDBY) を利用せず、RESTORE LOG WITH NORECOVERY を利用すれば、この事象は発生しません。

また、以下により、発生頻度を抑えることが可能です。

- トランザクション ログ ファイルの初期サイズ、拡張サイズをある程度(例えば、512 MB など)大きいサイズに設定する

 

※ 上記内容は、2018 年 1 月現在の情報となります。