次の方法で共有


SQL Server Always On の問題のトラブルシューティング

この記事は、SQL Server での Always On 構成に関する一般的な問題を解決するのに役立ちます。

Note

この記事のガイド付きチュートリアルについては、「 SQL Server Always On の問題のトラブルシューティングを参照してください。

元の製品バージョン: SQL Server 2012 Enterprise、SQL Server 2014 Enterprise、SQL Server 2016 Enterprise
元の KB 番号: 10179

重要

  • Microsoft CSS データは、顧客の問題のかなりの割合が以前にリリースされた CU で対処されることが多いが、事前に適用されていないことを示しています。そのため、利用可能になった CU の継続的なプロアクティブ インストールが推奨されます。 詳細については、「 SQL Server 増分サービス モデル (ISM)に対する更新プログラムの発表」を参照してください。

    お使いのバージョンで使用可能な最新の CU を確認するには、「 SQL Server とそのコンポーネントのバージョン、エディション、および更新レベルを決定する方法を参照してください。

  • さまざまな種類の問題の診断や可用性グループの監視に使用できるツールの詳細については可用性グループのトラブルシューティングと監視に関するガイドトラブルシューティングと Always On 可用性グループの監視に関するページを参照してください。 このガイドには、このガイド付きチュートリアルでは取り上げられない可能性がある追加のシナリオもあります。

  • Always On 可用性グループの親ノードに関するドキュメントと、さまざまな質問に関するワンストップ リファレンスについては、「 可用性グループでのAlways (SQL Server)」を参照してください。

Always On 可用性グループの設定と構成に関するポインターが必要です

Always On 構成の設定に関するドキュメントをお探しの場合は、次のドキュメントを参照してください。

Always On 可用性グループの概要 (SQL Server) - このドキュメントでは、可用性グループとセットアップに関する多くの質問に対する回答を示します。 この記事のすべての手順に従い、Always On 可用性グループ (SQL Server) 前提条件、制限事項、および推奨事項を確認すると 、環境内の可用性グループの設定と保守に関して発生する可能性のある多くの問題を回避するのに役立ちます。

その他のリソース

この情報が役に立たない場合は、「 Always On 可用性グループに関する詳細情報を参照してください。

Always On 可用性グループの構成で問題が発生しています

一般的な構成の問題には、Always On 可用性グループが無効になっている、アカウントが正しく構成されていない、データベース ミラーリング エンドポイントが存在しない、エンドポイントにアクセスできない (SQL Server エラー 1418)、ネットワーク アクセスが存在しない、データベースの結合コマンドが失敗する (SQL Server エラー 35250) などがあります。 これらの問題のトラブルシューティングについては、次のドキュメントを参照してください。

Always On 可用性グループの構成のトラブルシューティング (SQL Server)

追加リンク: 修正: 複数の可用性グループを作成しようとするとエラー 41009 が発生する

問題が解決しない場合は、「 Always On 可用性グループの詳細を参照してください。

リスナーの構成 (19471、19476、およびその他のエラー) に関する問題が発生しています

お客様が発生する最も一般的な構成の問題の 1 つは、可用性グループ リスナーの作成です。 エラーは次のようになります。

  • メッセージ 19471、レベル 16、状態 0、行 2 WSFC クラスターが DNS 名 '' のネットワーク名リソースをオンラインにできませんでした。 DNS 名が取得されたか、既存のネーム サービスと競合しているか、WSFC クラスター サービスが実行されていないか、アクセスできない可能性があります。 別の DNS 名を使用して名前の競合を解決するか、WSFC クラスター ログで詳細を確認してください。

  • メッセージ 19476、レベル 16、状態 4、行 2 リスナーのネットワーク名と IP アドレスの作成が失敗しました。 WSFC サービスが実行されていないか、現在の状態でアクセスできないか、ネットワーク名と IP アドレスに指定された値が正しくない可能性があります。 WSFC クラスターの状態を確認し、ネットワーク管理者にネットワーク名と IP アドレスを検証します。

ほとんどの場合、前のメッセージが発生したリスナーの作成エラーは、Active Directory のクラスター名オブジェクト (CNO) がリスナー コンピューター オブジェクトを作成して読み取るためのアクセス許可がないためです。 この問題のトラブルシューティングについては、次の記事を参照してください。

問題が解決しない場合は、「 Always On 可用性グループの詳細を参照してください。

自動フェールオーバーが期待どおりに動作しない

テスト中または運用環境で自動フェールオーバーが期待どおりに動作しない場合は、「 SQL Server 2012 Always On 環境での自動フェールオーバーの問題のトラブルシューティングを参照してください。

指定した期間内の Maximum エラーの不適切な構成は プライマリがセカンダリに自動的にフェールオーバーしない主な原因の 1 つです。 この設定の既定値は N-1 で、N はレプリカの数です。 詳細については、「 Failover クラスター (グループ) の最大障害数の制限を参照してください。

問題が解決しない場合は、「 Always On 可用性グループの詳細を参照してください。

Always On 可用性グループへの接続で問題が発生しています

SQL Server 2012 で Always On 可用性グループの可用性グループ リスナーを構成した後、リスナーに ping を実行したり、アプリケーションから接続したりできないことがあります。 次のようなエラーが発生する場合があります。

Sqlcmd: エラー: Microsoft SQL Native Client : ログイン タイムアウトの有効期限が切れています。

このエラーと同様のエラーをトラブルシューティングするには、次を確認します。

詳細情報のリンク:

問題が解決しない場合は、「 Always On 可用性グループの詳細を参照してください。

Azure VM (IaaS) で Always On 可用性グループの構成に関する問題が発生しています

  1. リスナーの構成が正しくないため、Always On に関連する多くの問題が発生します。 リスナーへの接続の問題が発生している場合は、次の手順を行います。

    1. ILB リスナーのすべての制限事項を読み、次の記事に記載されているすべての手順に従って、PowerShell スクリプトの依存関係の構成、IP アドレス、およびその他のさまざまなパラメーターに特に注意してください。

    2. 不明な場合は、上記のドキュメントに従ってリスナーを削除して再作成することができます。

  2. VM を別のサービスに最近移動した場合、または IP アドレスが変更された場合は、新しいアドレスを反映するように IP アドレス リソースの値を更新する必要があり、AG の負荷分散エンドポイントを再作成する必要があります。 IP アドレスは、次のように Get または Set コマンドを使用して更新できます。

    Get-ClusterResource "IPResourceName" | Set-ClusterParameter -name Address -value "w.x.y.z"
    

推奨されるドキュメント:

問題が解決しない場合は、「 Always On 可用性グループの詳細を参照してください。

プライマリからセカンダリへのフェールオーバー、またはその逆のフェールオーバーには長い時間がかかります

可用性グループのデータ損失のない自動フェールオーバーまたは計画された手動フェールオーバーの後に、フェールオーバー時間が回復時刻の目標 (RTO) を超えていることに気づく場合があります。 原因と考えられる解決策のトラブルシューティングについては、「 トラブルシューティング: 可用性グループの超過 RTO」を参照してください。

問題が解決しない場合は、「 Always On 可用性グループの詳細を参照してください。

プライマリ レプリカの変更が反映されないか、セカンダリ レプリカへのレプリケートに時間がかかる

プライマリ レプリカの変更が、タイムリーにセカンダリに反映されないことに気付く場合があります。 これらの問題をトラブルシューティングして解決するには、次の手順を試してください。

問題が解決しない場合は、「 Always On 可用性グループの詳細を参照してください。

AG データベースのトランザクション ログのサイズを管理する方法

プライマリ サーバーまたはセカンダリ サーバーで定期的なバックアップを構成することで、トランザクション ログのサイズを小さくできます。

追加情報については、次のトピックを参照してください。

この情報が役に立たない場合は、「 Always On 可用性グループに関する詳細情報を参照してください。

プライマリ サーバーまたはセカンダリ サーバーが状態の解決中に発生したか、予期しないフェールオーバーが発生する

問題が解決しない場合は、「 Always On 可用性グループの詳細を参照してください。

リソースをオンラインにできない

SQL ErrorLog のメッセージを確認して、データベースの復旧に時間がかかっているかどうかを確認します。

問題が解決しない場合は、「 Always On 可用性グループの詳細を参照してください。

よく寄せられる質問

  1. 1 つの可用性グループに対して 2 つのリスナーを持つことはできますか?

    はい。同じ可用性グループに対して複数のリスナーを設定できます。 「 同じ可用性グループ (GodenAo)に対して複数のリスナーを作成する方法を参照してください。

  2. 常にオンのトラフィックとクライアント接続用に別の NIC カードを持つことはできますか?

    はい。Always On トラフィック用の専用 NIC カードを使用できます。 専用ネットワーク上で通信するための可用性グループの構成に関するを参照してください。

  3. Always On フェールオーバー クラスター インスタンスをサポートするエディションは何ですか?

    SQL Server オンライン ブックのこのトピックには、 Editions と SQL Server 2016 のサポートされている機能

  4. クラスターのすべてのノードで障害が発生した場合に復旧する方法

    強制クォーラム WSFC ディザスター リカバリー (SQL Server) を参照してください。

  5. AG 構成での分散トランザクションのサポートに関する情報はどこで確認できますか?

    トランザクション - 可用性グループとデータベース ミラーリングを参照してください。

  6. Always On 構成を更新する方法

    Always On 可用性グループ レプリカ インスタンスのアップグレードを参照してください。

  7. TDE (Transparent Data Encryption) 対応データベースを AG 構成に追加する方法

    TDE 対応 DB を AG に追加するには、「 TDE データベースの Always On を構成する方法を参照してください。

  8. セカンダリがプライマリに遅れているかどうかを確認するためのアラートを構成する方法

    次のスクリプトを使用できます。

    SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server,
    dr_state.database_id AS database_id,
    is_ag_replica_local = CASE
        WHEN ar_state.is_local = 1 THEN N'LOCAL'
        ELSE 'REMOTE'
        END,
    ag_replica_role = CASE
        WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED'
        ELSE ar_state.role_desc
        END,
    dr_state.last_hardened_lsn, dr_state.last_hardened_time,
    datediff(s,last_hardened_time, getdate()) AS 'seconds behind primary'
    FROM (( sys.availability_groups AS ag
    JOIN sys.availability_replicas AS ar
        ON ag.group_id = ar.group_id)
    JOIN sys.dm_hadr_availability_replica_states AS ar_state
        ON ar.replica_id = ar_state.replica_id)
    JOIN sys.dm_hadr_database_replica_states dr_state
        ON ag.group_id = dr_state.group_id AND dr_state.replica_id = ar_state.replica_id
    
  9. データベースの状態が同期されていない場合にアラートを受け取る方法

    次のスクリプトを使用できます。

    SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server,
    dr_state.database_id AS database_id,
    is_ag_replica_local = CASE
        WHEN ar_state.is_local = 1 THEN N'LOCAL'
        ELSE 'REMOTE'
        END,
    ag_replica_role = CASE
        WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED'
        ELSE ar_state.role_desc
        END,
    ar_state.connected_state_desc, ar.availability_mode_desc, dr_state.synchronization_state_desc
    FROM (( sys.availability_groups AS ag
    JOIN sys.availability_replicas AS ar
        ON ag.group_id = ar.group_id )
    JOIN sys.dm_hadr_availability_replica_states AS ar_state
        ON ar.replica_id = ar_state.replica_id)
    JOIN sys.dm_hadr_database_replica_states dr_state
        ON ag.group_id = dr_state.group_id AND dr_state.replica_id = ar_state.replica_id
    

    Always On グループを監視するその他の方法については、次のリンクを参照することもできます。

Always On 可用性グループの詳細