SQL Serverで多数のデータベースのスナップショットバックアップを同時に作成するとエラーが発生する

この記事では、SQL Serverで多数のデータベースのスナップショット バックアップを同時に作成する場合の問題 (ERROR Selected writer 'Microsoft Writer (Service State)' is in failed stateメッセージ) を回避するのに役立ちます。

元の製品バージョン: SQL Server
元の KB 番号: 943471

現象

Microsoft SQL Serverでは、多数のデータベースのスナップショット バックアップを同時に作成します。 これを行うには、ボリューム シャドウ コピー サービス (VSS) を使用するか、仮想バックアップ デバイス インターフェイス (VDI) を使用します。 このシナリオでは、スナップショットバックアップ操作は失敗します。 さらに、VSS を使用してスナップショット バックアップを作成すると、次のエラー メッセージが表示されます。

エラー: 選択したライター 'Microsoft ライター (サービス状態)' が失敗状態です。

  • 状態: 8 (VSS_WS_FAILED_AT_PREPARE_SNAPSHOT)
  • ライター エラー コード: 0x800423f4 (<不明なエラー コード>)
  • ライター ID: { WriterID }
  • インスタンス ID: { InstanceID }

VDI を使用してスナップショット バックアップを作成すると、次のいずれかのエラー メッセージが表示されます。

  • エラー メッセージ 1

    [Microsoft][ODBC SQL Server Driver][SQL Server] UMS スケジューラを作成するためのリソースが不足しています。
    メッセージ 3267、SevLevel 16、状態 1、SQLState 42000

  • エラー メッセージ 2

    [Microsoft][ODBC SQL Server Driver][SQL Server] ワーカー スレッドを作成できませんでした。
    Msg 3013、SevLevel 16、State 1、SQLState 42000

  • エラー メッセージ 3

    次のメッセージは、SQL Serverエラー ログに記録される場合があります。

    <Datetime> spid420 SubprocessMgr::EnqueueSubprocess: 'max worker threads' の制限に達しました

    この問題が発生したときにバックアップしようとするデータベースの数はさまざまです。 データベースの数は、次の条件によって異なります。

    • SQL Serverの構成。
    • SQL Serverのその他のアクティビティ。

原因

SQL Serverでは、各データベースのスナップショットバックアップでは、Sqlservr.exe プロセスで 5 つのスレッドが使用されます。 さらに、他のアクティビティでは、 Sqlservr.exe プロセスでスレッドを使用することもできます。 SQL Serverの構成によっては、多数のデータベースのスナップショットバックアップを同時に作成すると、使用可能なスレッドが使い切れる場合があります。

回避策

この問題を回避するには、少ないデータベースのスナップショットバックアップを同時に作成します。

64 ビット バージョンのSQL Serverを実行している場合は、[ワーカー スレッドの最大数] 構成オプションを増やすことを検討できます。 32 ビット バージョンのSQL Serverでこの設定を変更することはお勧めしません。

詳細

同時に 35 個未満のデータベースのスナップショットバックアップを作成することをお勧めします。