web-dev-qa-db-ja.com

LOG_BACKUP log_reuse_wait_descを使用したSQL Server 2012シンプルリカバリモデル

私が自分で調査しているときに、SIMPLE復旧モデルのデータベースにLOG_BACKUPlog_reuse_wait_descがある理由を誰かが知っていますか?

SQL Server 2012 SP1。数週間前に作成されたデータベース。レプリケーション、ミラーリング、ログ配布はありません。

データベースをバックアップして別のインスタンスに復元しました。他のインスタンスのlog_reuse_waitSIMPLENOTHINGが表示されています。しかし、別のインスタンスへの復元は、復元操作がトランザクションをロールフォワード/ロールバックするときに問題を再現する良い方法だとは思いません。

11
Travis

さて、昨日昼も夜も問題の調査、テスト、再現に費やしました。根本原因を発見:

MODELデータベースをSIMPLE復旧モデルに設定します。

モデルデータベースがSIMPLE復旧モデルに設定されており、ユーザーデータベースがSIMPLE復旧モデルを使用して作成されている場合、SQL Serverは何らかの方法でそれをFULL復旧モデル内にあるかのように処理します。したがって、_LOG_BACKUP_がログを切り捨てるのを待っています。

この link に手順をリストして、問題の再現方法を示しました。

根本的な原因は、ユーザーデータベースが単純な復旧モデルで作成された(後で変更されていない)場合に、この問題が発生すると考えられます。モデルデータベースに責任があるのは、それが定義された復旧モデルでユーザーデータベースを作成する唯一の方法だからです。

これは、マイクロソフトサポート技術情報の記事2830400に記載されており、SQL Server 2012 SP1 CU4およびRTM CU7:

11
Travis