私が自分で調査しているときに、SIMPLE
復旧モデルのデータベースにLOG_BACKUP
のlog_reuse_wait_desc
がある理由を誰かが知っていますか?
SQL Server 2012 SP1。数週間前に作成されたデータベース。レプリケーション、ミラーリング、ログ配布はありません。
データベースをバックアップして別のインスタンスに復元しました。他のインスタンスのlog_reuse_wait
にSIMPLE
とNOTHING
が表示されています。しかし、別のインスタンスへの復元は、復元操作がトランザクションをロールフォワード/ロールバックするときに問題を再現する良い方法だとは思いません。
さて、昨日昼も夜も問題の調査、テスト、再現に費やしました。根本原因を発見:
MODEL
データベースをSIMPLE
復旧モデルに設定します。
モデルデータベースがSIMPLE
復旧モデルに設定されており、ユーザーデータベースがSIMPLE
復旧モデルを使用して作成されている場合、SQL Serverは何らかの方法でそれをFULL
復旧モデル内にあるかのように処理します。したがって、_LOG_BACKUP
_がログを切り捨てるのを待っています。
この link に手順をリストして、問題の再現方法を示しました。
根本的な原因は、ユーザーデータベースが単純な復旧モデルで作成された(後で変更されていない)場合に、この問題が発生すると考えられます。モデルデータベースに責任があるのは、それが定義された復旧モデルでユーザーデータベースを作成する唯一の方法だからです。
これは、マイクロソフトサポート技術情報の記事2830400に記載されており、SQL Server 2012 SP1 CU4およびRTM CU7: