web-dev-qa-db-ja.com

ログ配布-スタンバイ状態で復元-SQL Server 2012で問題が発生し続ける

レポートの目的でデータベースを読み取り専用モードで復元するために、SQL Server 2012ではログ配布とRESTORE WITH STANDBYを使用しています。ただし、1つまたは2つのログバックアップの復元が完了した後、ログ配布の設定が壊れ続けます。ログ配布は、RESTORE WITH STANDBYとして実行されている場合にのみ機能します。 RESTORE WITH NORECOVERYは問題を引き起こしません。

これに関する私の唯一の直感は、プライマリデータベースはそれほど動的ではないということです。したがって、トランザクションがない場合、RESTOREプロセスで問題が発生する可能性がありますか?

アイデア、既知の修正?

2つのテーブルを頻繁に更新する定期的なジョブを実行することで、数日間は機能していました。ジョブがログ配布セットアップの実行を停止するとすぐに失敗し、.trnファイルを処理できませんでした。私はログ配布をリセットし、小さな更新を行って、テーブルの1つのレコードの1つの列の値を変更することによって、それが失敗した場合でも実行し続けるかどうかを確認しようとしました。

ご回答いただきありがとうございます。

PS:ログからの抜粋

 2013年2月25日13:00:00、LSRestore_DBDB01-A_BulldogDB、In Progress、1、DBREPORTS、LSRestore_DBDB01-A_BulldogDB、Log shipping restore log job step。, 2013-02-25 13:00:12.31 ***エラー:ログバックアップファイル '\\ dbsan01\DBBackups\LSBackup_BulldogDB\BulldogDB_20130225180000.trn'をセカンダリデータベース 'BulldogDB'に適用できませんでした。(Microsoft.SqlServer.Management.LogShipping)*** 
 2013- 02-25 13:00:12.31 ***エラー:データベース 'BulldogDB'のログの処理中にエラーが発生しました。可能であれば、バックアップから復元します。バックアップが使用できない場合は、ログを再構築する必要がある可能性があります。
リカバリ中にエラーが発生し、データベース「BulldogDB」(8:0)を再起動できませんでした。回復エラーを診断して修正するか、既知の適切なバックアップから復元します。エラーが修正されない、または予期されない場合は、テクニカルサポートに連絡してください。
 RESTORE LOGが異常終了しています。
ファイル1のデータベース「BulldogDB」ファイル「BulldogDB」の0ページを処理しました。
処理1ファイル1のデータベース「BulldogDB」ファイル「BulldogDB_log」のページ(.Net SqlClientデータプロバイダー)*** 
 2013-02-25 13:00:12.32 ***エラー:履歴/エラーをログに記録できませんでしたmessage。(Microsoft.SqlServer.Management.LogShipping)*** 
 2013-02-25 13:00:12.32 ***エラー:ExecuteNonQueryには、オープンで使用可能な接続が必要です。接続の現在の状態は閉じています。(System.Data)*** 
 2013-02-25 13:00:12.32セカンダリデータベースのログバックアップファイル '\\ dbsan01\DBBackups\LSBackup_BulldogDB\BulldogDB_20130225180000.trn'をスキップしていますファイルを検証できなかったため、 'BulldogDB'。
 2013-02-25 13:00:12.32 ***エラー:履歴/エラーメッセージをログに記録できませんでした。(Microsoft.SqlServer.Management.LogShipping)** * 
 2013-02-25 13:00:12.32 ***エラー:ExecuteNonQueryには、オープンで使用可能な接続が必要です。接続の現在の状態が閉じています。(System.Data)*** 
 2013-02-25 13:00:12.33 ***エラー:データベースアクセスモードの復元中にエラーが発生しました。(Microsoft.SqlServer.Management .LogShipping)*** 
 2013-02-25 13:00:12.33 ***エラー:ExecuteScalarには、オープンで使用可能な接続が必要です。接続の現在の状態は閉じられています。(System.Data)*** 
 2013-02-25 13:00:12.33 ***エラー:履歴/エラーメッセージをログに記録できませんでした(Microsoft.SqlServer.Management。 LogShipping)*** 
 2013-02-25 13:00:12.33 ***エラー:ExecuteNonQueryには、オープンで使用可能な接続が必要です。接続の現在の状態が閉じています。(System.Data)*** 
 2013-02-25 13:00:12.33 ***エラー:データベースアクセスモードの復元中にエラーが発生しました。(Microsoft.SqlServer.Management .LogShipping)*** 
 2013-02-25 13:00:12.33 ***エラー:ExecuteScalarには、オープンで使用可能な接続が必要です。接続の現在の状態は閉じられています。(System.Data)*** 
 2013-02-25 13:00:12.33 ***エラー:履歴/エラーメッセージをログに記録できませんでした(Microsoft.SqlServer.Management。 LogShipping)*** 
 2013-02-25 13:00:12.33 ***エラー:ExecuteNonQueryには、オープンで使用可能な接続が必要です。接続の現在の状態は閉じられています。(System.Data)*** 
 2013-02-25 13:00:12.33古いログバックアップファイルを削除しています。プライマリデータベース: 'BulldogDB' 
 2013-02-25 13:00:12.33 ***エラー:履歴/エラーメッセージをログに記録できませんでした(Microsoft.SqlServer.Management.LogShipping)*** 
 2013-02-25 13:00:12.33 ***エラー:ExecuteNonQueryには、オープンで使用可能な接続が必要です。接続の現在の状態は閉じています。(System.Data)***、00:00:12,0,0 , 0 
10
Mendel

セカンダリデータベースがNORECOVERYのときにログバックアップを復元でき、READ-ONLY/STANDBYのときにのみ失敗する場合、ログバックアップ自体は問題なく、破損していないと思います。

レポートコンポーネントがデータベースへのオープン接続を持っている可能性があります。そのため、ログファイルを復元するときに、オープン接続のためにデータベースへの排他的接続を取得できません。ログ配布を設定するときに、接続を切断してログバックアップを復元できるようにするオプションがあります。

4
Ian Chamberland

スタンバイセカンダリリストアでは、ジョブの開始時にのみユーザーを切断します。開始後、ユーザーは接続できます...これにより、「排他的なアクセス」に関するエラーで復元プロセスが停止します。復元中にスタンバイデータベースに接続しようとするサービスを受けました。そのため、1-10/100でファイルを復元した後、復元プロセスが中断しました。

1
Wiedzm