次の方法で共有


MSSQLSERVER_35267

適用対象:SQL Server

詳細

属性
製品名 SQL Server
イベント ID 35267
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 HADR_DISCONNECTED_DB
メッセージ テキスト レプリカ ID を持つ可用性レプリカ '%.*ls' の %S_MSG データベース '%.*ls' に対して %S_MSG データベースとの接続が終了したAlways On: {%.8x-%.4x-%.4x-%.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 で同期モードが使用され、接続が失われた場合、ローカル レプリカがリモートからの確認を待機する可能性があります。 その結果、トランザクション ログは切り捨てられず、トランザクション ログの領域が不足します (エラー 9002) 以降は使用できなくなります (エラー 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に関するスケジューラの問題を確認する

一般的な非 yielding スケジューラの問題は、70 秒後にエラー ログSQL Server非 yield 状態で記録されます。 ただし、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 ノード間の接続が断続的または短時間で行われる原因である可能性があります。

SQLDIAG 拡張イベント ログを使用する

  1. イベントの時点から 、\Log ディレクトリで SQLDIAG 拡張イベント ログ を見つけます (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'
    • <> state_desc'clean'
  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%.
    

    T 撮影手順の詳細については、「MSSQLSERVER_17890」を参照してください。

手順 6. メモリ内の最大サーバー メモリとロックされたページを正しく構成する

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

低速ディスク 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パフォーマンスのトラブルシューティング」を参照してください。