次の方法で共有


MSSQLSERVER_35267

適用対象:SQL Server

詳細

属性 Value
製品名 SQL Server
イベント ID 35267
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 HADR_DISCONNECTED_DB
メッセージ テキスト 可用性レプリカ '%.*ls' の %S_MSG データベース '%.*ls' に対して %S_MSG データベースとの Always On 可用性グループ接続が終了しました。レプリカ ID: {%.8x-%.4x-%.4x-%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x}} です。 このメッセージは情報提供だけを目的としています。 ユーザーによる操作は不要です。

説明

このメッセージは、可用性グループ レプリカがデータベース ミラーリング エンドポイント上のリモート レプリカへの接続を失ったときに発生します。 このエラーを確認する方法の例を次に示します。

Always On Availability Groups connection with secondary database terminated for primary database 'ContosoDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.

このエラーは、セカンダリ レプリカとの通信が失われたことを示すプライマリ レプリカに表示される場合があります。その逆も同様です。

エラー 35267 は通常、断続的であり、基になる原因が解決された時点で自動的に解決される可能性があります。 たとえば、断続的なネットワークの問題が解決され、接続自体が再確立される可能性があります。

多くの場合、ローカル ノードが接続しようとしているリモート ノードは、接続エラーを認識していない可能性があります。 そのため、このエラーは両方ではなく、いずれかのレプリカでのみ発生する可能性があります。

エラー 35267 がエラー 35206 と共に発生する場合があります。これは、接続が成功せずにかなりの期間が経過したときに発生します (たとえば、10 秒を超える場合)。

A connection timeout has occurred on a previously established connection to availability replica 'PRODSQL' with id [xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx].  Either a networking or a firewall issue exists or the availability replica has transitioned to the resolving role.

Always On Availability Groups connection with primary database terminated for secondary database 'ContosoHRDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoFinDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoMktngDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.

リモート レプリカとの AG 接続の終了によって、さまざまな問題がローカル レプリカに発生する可能性があります。 たとえば、AG が同期モードを使用し、接続が失われた場合、ローカル レプリカがリモートからの確認を待機する可能性があります。 その結果、トランザクション ログは切り捨てられず、トランザクション ログの領域が不足し (エラー MSSQLSERVER_9002)、後で使用できなくなります (エラー MSSQLSERVER_9001)。 これが発生したエラーのグループの例を次に示します。 トランザクション ログがいっぱいになる理由は "AVAILABILITY_REPLICA" です。つまり、このレプリカは、リモートのレプリカがログ レコードの適用を確認するのを待機しています。

Error: 9002, Severity: 17, State: 9.
The transaction log for database 'ContosoAnalyticsDb' is full due to 'AVAILABILITY_REPLICA'.
Error: 3314, Severity: 21, State: 3.
During undoing of a logged operation in database 'ContosoAnalyticsDb' (page (1:32573799) if any), an error occurred at log record ID (7672713:36228:159). Typically, the specific failure is logged previously as an error in the operating system error log. Restore the database or file from a backup, or repair the database.
State information for database 'ContosoAnalyticsDb' - Hardened Lsn: '(7672713:38265:1)'    Commit LSN: '(7672712:1683087:46)'    Commit Time: 'JuN  10 2022  5:51AM'

Always On Availability Groups connection with secondary database terminated for primary database 'ContosoAnalyticsDb' on the availability replica 'SQL2019DB' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.

Database ContosoAnalyticsDb was shutdown due to error 3314 in routine 'XdesRMReadWrite::RollbackToLsn'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.

Error during rollback. shutting down database (location: 1).
Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoAnalyticsDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.

Recovery of database 'ContosoAnalyticsDb' (6) is 0% complete (approximately 60177 seconds remain). Phase 2 of 3. This is an informational message only. No user action is required.

原因

  • プライマリ レプリカとセカンダリ レプリカの間にネットワーク接続の問題が存在する可能性がある
  • プライマリ レプリカまたはセカンダリ レプリカでの SQL Server または OS の問題により、スレッドが実行できなくなります。 たとえば、次のものがあります。
    • SQL OS スケジューラの問題 (非生成スケジューラまたはデッドロック スケジューラ)
    • SQL Server を含むシステム上のすべてのプロセスのワーキング セット トリミングに至るマシンのメモリが不足しています
    • オペレーティング システムの問題が原因でプロセスの応答が停止する
  • プライマリ レプリカまたはセカンダリ レプリカで断続的な長い待機を引き起こす I/O の低速の問題

ユーザー アクション

以下の情報は、より一般的なシナリオの概要を示していますが、トラブルシューティング手順の完全な一覧ではありません。 この問題が発生する具体的な理由には、可能性の長いリストが含まれる場合があります。

接続に関する問題

エラーが発生した SQL Server からリモート SQL Server への接続の問題を確認するには、次の手順を検討します。

ステップ 1. リモート SQL Server 上のエンドポイントがアクティブであることを確認する

次のクエリを実行して、エンドポイントを検出します

SELECT
 tep.name as EndPointName,
 sp.name As CreatedBy,
 tep.type_desc,
 tep.state_desc,
 tep.port
FROM
 sys.tcp_endpoints tep
INNER JOIN sys.server_principals sp ON tep.principal_id = sp.principal_id
WHERE tep.type = 4

ステップ 2. リモート エンドポイントへの接続をテストする

Test-NetConnection を使用して接続を検証します。 エンドポイントがリッスンしていて、接続が成功した場合は、TcpTestSucceeded : True ServerName またはIP_Addressをリモート SQL Server に置き換え、ポート番号をデータベース ミラーリング エンドポイントのポート番号に置き換えます。

Test-NetConnection -ComputerName <ServerName> -Port <port_number>
Test-NetConnection -ComputerName <IP_address> -Port <port_number>

手順 3. ネットワーク トレースを収集する

ネットワーク のリセット (破棄されたパケット) や同様の問題を示すネットワーク トレースをキャプチャしない限り、断続的なネットワーク エラーの追跡が困難なことがよくあります。 詳細については、「0300 断続的または定期的なネットワークの問題」を参照してください

SQL Server スケジューラの問題

さまざまな理由で SQL Server ワーカー スレッドがスケジューラの問題に陥っている場合、スケジューラの問題が最後に発生している間、受信要求にサービスを提供するスレッドが一時的に応答を停止する可能性があります。

ステップ 4: SQL Server でスケジューラの問題を確認する

一般的な非イールド スケジューラの問題は、非イールド状態が 70 秒後に SQL Server エラー ログに記録されます。 ただし、SQL Server はスケジューラの状態をそれより頻繁にチェックし、拡張イベントで中間の非生成状態を報告します。 エラー 35267 の時刻に対応するリモート ノードでスケジューラの問題が明らかになった場合は、まずそれらを解決することに重点を置きます。 ここでは、70 秒のしきい値に達しないが、10 秒または 20 秒間発生するスケジューラの問題が短時間発生しているかどうかを確認する方法を示します。

System Health 拡張イベント ファイルを使用する

  1. イベントの 時点から System Health 拡張イベント ファイルを見つけます。
  2. をダブルクリックして system_health_0_xxxxxxxxxxxxxxxxxx.xel 、SQL Server Management Studio (SSMS) で開きます。 または、ファイルをテーブルとして表示またはインポートして、フィルター処理を容易にすることもできます sys.fn_xe_file_target_read_file
  3. イベントが発生scheduler_monitor_non_yielding_ring_buffer_recorded検索します。 見つかると、これは、SQL Server が非生成スケジューラ イベントを検出し、それらを記録していることを示しています。 これらのイベントは、非イードリング スケジューラの実際のメモリ ダンプとエラー ログ エントリよりも前に記録されます。これは、非生成状態が 60 ~ 70 秒後に発生します。 言い換えると、scheduler_monitor_non_yielding_ring_buffer_recorded使用して、エラー ログに記録されていないが発生した、有効期間の短い非生成スケジューラの問題を検出できます。 これは、断続的な、または AG ノード間の接続の有効期間が短い原因である可能性があります。

診断ログを 使用する

  1. イベントの 時点から \Log ディレクトリ内の診断ログ を見つけます (Windows クラスター システムに適用されます)。 ファイル名の形式は次 SERVERNAME_MSSQLSERVER_SQLDIAG_x_xxxxxxxxxxxxxxxxxx.xelのようになります。

  2. ファイルをダブルクリックして SQL Server Management Studio (SSMS) で開きます。 または、ファイルをテーブルとして表示またはインポートして、フィルター処理を容易にすることもできます sys.fn_xe_file_target_read_file

  3. SSMS で開いたら、component_health_result イベントのインスタンスを見つけて、次を右クリックし、[テーブルに列を表示] コンポーネントを選択しますstate_desc

  4. 次に、各列を右クリックし、[この値でフィルター] を選択して、次のフィルターを適用します。

    • 表示される 唯一のイベントであるcomponent_health_result イベント
    • component field='query processing'
    • "clean" をstate_desc<> します。
  5. 次に、データ列をダブルクリックして XML データを開き、最初の行の値を確認trackingNonYieldingSchedulerします。

  6. 値が異なる 0x0 場合は、SQL Server が非生成スケジューラの早期兆候を検出し、ここで報告していることを意味します。

    SQL Server がスケジューラ アドレス "0x4fedb840040" を持つ非生成条件を検出した例を次に示します。

     <queryProcessing maxWorkers="9600" workersCreated="2574" workersIdle="1883" tasksCompletedWithinInterval="175591" pendingTasks="3" ... trackingNonYieldingScheduler="0x4fedb840040">
    

オペレーティング システムのメモリ不足

オペレーティング システム (OS) レベルでは、このような断続的な応答不足を引き起こすさまざまな問題が発生する可能性があります。 一般的なものはメモリ不足です。 疑わしい問題が発生しているリモート AG ノードで、次の手順を実行します。

ステップ 5: ディスクへの SQL Server メモリ ページングにつながる OS メモリの問題を確認する

  1. Windows システム のイベント ログで、物理メモリまたは仮想メモリの不足を示すエラーがないか確認します。

  2. SQL Server エラー ログまたは Windows アプリケーション イベント ログでエラー 17890 を確認して、マシンのメモリ不足が、SQL Server を含むシステム上のすべてのプロセスのワーキング セット トリミングにつながるかどうかを確認します。 エラーは次のようになります。

    A significant part of SQL Server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 3383250, committed (KB):    9112480, memory utilization: 37%.
    

    詳細な撮影手順については、MSSQLSERVER_17890を参照してください

ステップ 6. メモリ内の最大サーバー メモリとロック ページを正しく構成する

  1. OS やその他のプロセスで使用できるメモリを使用できる値に SQL Server Max Server Memory を構成します。 SQL Server の最大サーバー メモリをシステム上の RAM サイズの 75% 以下に設定する場合に推奨される値です。 詳細については、「サーバー メモリ構成オプション」を参照してください
  2. SQL Server バッファー キャッシュの大規模なページングを防ぐために、[メモリ内のページをロックする] オプション (Windows) を有効にします。

低速ディスク I/O

場合によっては、I/O が過度に遅いと、SQL Server スレッドが一時的に応答を停止し、他の AG レプリカが切断される可能性があります。

手順 7. 低速 I/O の問題を解決する

低速 I/O を示すエラーが発生した場合は、I/O が遅い原因のトラブルシューティングを行います。

SQL Server has encountered 2 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\TLOG\ContosoDb.ldf] in database id 9.  The OS file handle is 0x00000000000003BC.  The offset of the latest long I/O is: 0x0000003d26f600
SQL Server has encountered 2 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\DATA\t38data\ContosoDb2.mdf] in database id 7.  The OS file handle is 0x000000000000118C.  The offset of the latest long I/O is: 0x00000000012000
SQL Server has encountered 1 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\DATA\t38data\ContosoDb.mdf] in database id 9.  The OS file handle is 0x000000000000134C.  The offset of the latest long I/O is: 0x00000000012000

Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb2' on the availability replica 'SQLNODE1\INSTANCE19' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb' on the availability replica 'SQLNODE1\INSTANCE19' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
  • すべてのデバイス ドライバーとファームウェアを更新するか、I/O サブシステムに関連付けられているその他の診断を実行する
  • ディスク アクセスは、フィルター ドライバー (ウイルス対策プログラムなど) によって遅くなる可能性があります。 アクセス速度を上げるには、アクティブなウイルス スキャンから SQL Server データ ファイルを除外します
  • ハードウェア ベンダーおよびシステム管理者と協力して、低速 I/O の原因を診断して解決する

詳細な手順については、「I/O の問題とMSSQLSERVER_833によって発生する SQL Server のパフォーマンス低下のトラブルシューティング」を参照してください