azure Site Recovery ジョブなどのコンポーネント以外の VSS バックアップは、AUTO_CLOSE DB を持つ SQL Server インスタンスをホストしているサーバーで失敗する

この記事では、AZURE Site Recovery (ASR) ジョブなどのコンポーネント以外のボリューム シャドウ コピー サービス (VSS) バックアップが、DB を使用してSQL Server インスタンスをホストするサーバーでAUTO-CLOSE失敗する問題を解決するのに役立ちます。

元の製品バージョン: SQL Server 2017 on Windows、SQL Server 2016、SQL Server 2014、SQL Server 2012、SQL Server 2008 R2、SQL Server 2008、VM SQL Server - Windows
元の KB 番号: 4504104

現象

次のような状況で問題が発生します。

  • 任意のバージョンの Microsoft SQL Serverを実行しているサーバーがあります。
  • このSQL Serverインスタンスは、AUTO-CLOSE オプションが設定されているデータベースをホストします。
  • データベース ファイルをホストしているこのサーバーのボリュームに対して、コンポーネント以外の VSS バックアップ (ASR エージェントを使用するなど) SQL Server実行します。

この状況では、VSS バックアップが失敗し、アプリケーション ログに次のエントリがトリガーされます。

VSS ライターがエラー 0x800423f4を持つイベントを拒否した場合、ライターで一時的でないエラーが発生しました。 バックアップ プロセスが再試行された場合、エラーが再発する可能性があります。 イベントの処理中にライターがライター コンポーネントに加えた変更は、要求元では使用できません。 VSS ライターをホストしているアプリケーションからの関連イベントがないか、イベント ログを確認します。
操作:
PostSnapshot イベント
コンテキスト:
実行コンテキスト: ライター
ライター クラス ID: {ID}
ライター名: SqlServerWriter
ライター インスタンス名: Microsoft SQL Server 2012:SQLWriter
ライター インスタンス ID: {ID}
コマンド ライン: ""C:\Program Files\Microsoft SQL Server\90\Shared\sqlwriter.exe""
プロセス ID: xxx"

原因

この問題は、SQL SERVER SQLWriter が現在、コンポーネント以外のモードの VSS バックアップ要求で AUTO-CLOSE データベースを正しく処理しないために発生します。

回避策

短期的な軽減策として、コンポーネント以外の VSS バックアップを受け取るサーバーでホストされているすべてのSQL Server インスタンスのすべてのデータベースで AUTO-CLOSE オプションを無効にすることをお勧めします。 通常、ASR エージェントがこのようなコンポーネント以外のバックアップを実行するため、SQL Serverを実行する Azure 仮想マシンが影響を受ける。

詳細

  • 既定では、SQL Express のAUTO_CLOSE動作を理解SQL Server:アイドル時間リソースの使用状況、AUTO_CLOSE、およびユーザー インスタンスのプロパティは OFF に設定されています。 この問題の影響を受ける可能性があるサーバーでこの設定を手動で有効にしていないと確信している場合は、他のアプリケーションのコンポーネントとしてサイレント インストールされている可能性があるSQL Server Expressインスタンスを調査します。

  • モードが有効になっているデータベースの一覧をAUTO_CLOSE取得するには、特定のSQL Server インスタンスに対してクエリを実行します。 select name,database_id,is_auto_close_on from sys.databases where is_auto_close_on=1

  • 設定を変更するには、TSQL の AUTO_CLOSE オンライン ドキュメントの ALTER DATABASE SET オプション のセクションを参照してください。

    • このオプションを OFF に切り替えるには、既定のクライアント sqlcmd.exe で次のコマンドを実行します (たとえば、My Database データベースの場合)。

      alter database <myDatabase> set auto_close OFF
      
    • 変更はすぐに有効になります。 この変更を元に戻すには、次のコマンドを実行します。

      alter database <myDatabase> set auto_close ON
      
  • GUI メソッドを使用する場合は、SQL Server Management Studioの [データベース プロパティ>オプション] を使用します