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

このトピックでは、サーバー インスタンスでの AlwaysOn 可用性グループの構成に関する一般的な問題のトラブルシューティングに役立つ情報を提供します。 構成に関する一般的な問題には、AlwaysOn 可用性グループが無効になっている、アカウントが適切に構成されていない、データベース ミラーリング エンドポイントが存在しない、エンドポイントにアクセスできない (SQL Server エラー 1418)、ネットワーク アクセスが存在しない、データベース参加コマンドが失敗する (SQL Server エラー 35250) などがあります。

注意

AlwaysOn 可用性グループの前提条件を満たしていることを確認してください。 詳細については、「AlwaysOn 可用性グループの前提条件、制限事項、および推奨事項 (SQL Server)」を参照してください。

このトピックの内容

セクション

説明

AlwaysOn 可用性グループが有効になっていない

SQL Server のインスタンスで AlwaysOn 可用性グループが有効になっていない場合、そのインスタンスでは可用性グループの作成がサポートされず、可用性レプリカをホストできません。

アカウント

SQL Server を実行しているアカウントを適切に構成するための要件について説明します。

エンドポイント

サーバー インスタンスのデータベース ミラーリング エンドポイントに関する問題の診断方法について説明します。

システム名

エンドポイントの URL でサーバー インスタンスのシステム名を指定するためのその他の方法について概要を説明します。

ネットワーク アクセス

可用性レプリカをホストしている各サーバー インスタンスが TCP で他の各サーバー インスタンスのポートにアクセスできる必要があるという要件について説明します。

エンドポイント アクセス (SQLServer エラー 1418)

この SQL Server エラー メッセージに関する情報が含まれます。

データベースの参加の失敗 (SQL Server エラー 35250)

プライマリ レプリカへの接続がアクティブでないためにセカンダリ データベースを可用性グループに参加させることができない問題について、考え得る原因と解決策について説明します。

読み取り専用ルーティングが正常に動作しない

関連タスク

SQL Server 2012 オンライン ブックの中の、可用性グループ構成のトラブルシューティングに特に関連するタスク指向のトピックの一覧が含まれます。

関連コンテンツ

SQL Server オンライン ブックの外部にある関連したリソースの一覧が含まれます。

AlwaysOn 可用性グループが有効になっていない

AlwaysOn 可用性グループ機能は、SQL Server 2012 の各インスタンスで有効になっている必要があります。 詳細については、「AlwaysOn 可用性グループの有効化と無効化 (SQL Server)」を参照してください。

アカウント

SQL Server の実行に使用するアカウントは、正しく構成されている必要があります。

  1. アカウントに適切な権限が与えられていることを確認します。

    1. パートナーを同じドメイン ユーザー アカウントで実行している場合は、両方の master データベースに正しいユーザー ログインが自動的に存在します。 この場合は、データベースのセキュリティ構成が単純になるため、望ましいといえます。

    2. 2 つのサーバー インスタンスが別々のアカウントで実行されている場合、リモート サーバー インスタンスの master にそれぞれのアカウントのログインを作成する必要があります。また、そのログインには、対応するサーバー インスタンスのデータベース ミラーリング エンドポイントに接続するための CONNECT 権限を付与する必要があります。 詳細については、「データベース ミラーリングまたは AlwaysOn 可用性グループのログイン アカウントの設定 (SQL Server)」を参照してください。

  2. SQL Server がビルトイン アカウント (Local System、Local Service、Network Service など) で実行されている場合または非ドメイン アカウントで実行されている場合は、エンドポイント認証に証明書を使用する必要があります。 サービス アカウントで同じドメインのドメイン アカウントを使用している場合は、すべてのレプリカの場所の各サービス アカウントに対して CONNECT アクセスを付与するか、証明書を使用できます。 詳細については、「データベース ミラーリング エンドポイントでの証明書の使用 (Transact-SQL)」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

エンドポイント

エンドポイントが正しく構成されている必要があります。

  1. 可用性レプリカ (各レプリカの場所) をホストする SQL Server の各インスタンスにデータベース ミラーリング エンドポイントがあることを確認します。 データベース ミラーリング エンドポイントが特定のサーバー インスタンスに存在するかどうかを確認するには、sys.database_mirroring_endpoints カタログ ビューを使用します。 詳細については、「Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)」または「データベース ミラーリング エンドポイントで発信接続に証明書を使用できるようにする (Transact-SQL)」を参照してください。

  2. ポート番号が適切であることを確認します。

    サーバー インスタンスのデータベース ミラーリング エンドポイントに現在関連付けられているポートを識別するには、次の Transact-SQL ステートメントを使用します。

    SELECT type_desc, port FROM sys.tcp_endpoints;
    GO
    
  3. 説明が困難な AlwaysOn 可用性グループのセットアップに関する問題については、各サーバー インスタンスを調査して、それぞれが正しいポートでリッスンしているかどうかを確認することをお勧めします。 ポートの可用性の検証については、「MSSQLSERVER_1418」を参照してください。

  4. エンドポイントが開始されていること (STATE = STARTED) を確認します。 各サーバー インスタンスで、次の Transact-SQL ステートメントを使用します。

    SELECT state_desc FROM sys.database_mirroring_endpoints
    

    state_desc 列の詳細については、「sys.database_mirroring_endpoints (Transact-SQL)」を参照してください。

    エンドポイントを開始するには、次の Transact-SQL ステートメントを使用します。

    ALTER ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS TCP (LISTENER_PORT = <port_number>)
    FOR database_mirroring (ROLE = ALL);
    GO
    

    詳細については、「ALTER ENDPOINT (Transact-SQL)」を参照してください。

  5. 他のサーバーからのログインに、CONNECT 権限があることを確認します。 あるエンドポイントに対して CONNECT 権限のあるユーザーを確認するには、各サーバー インスタンスで、次の Transact-SQL ステートメントを使用します。

    SELECT 'Metadata Check';
    SELECT EP.name, SP.STATE, 
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id)) 
          AS GRANTOR, 
       SP.TYPE AS PERMISSION,
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id)) 
          AS GRANTEE 
       FROM sys.server_permissions SP , sys.endpoints EP
       WHERE SP.major_id = EP.endpoint_id
       ORDER BY Permission,grantor, grantee; 
    GO
    

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

システム名

エンドポイントの URL におけるサーバー インスタンスのシステム名には、システムを明確に識別できる任意の名前を使用できます。 サーバー アドレスには、システム名 (システムが同じドメインに存在する場合)、完全修飾ドメイン名、または IP アドレス (可能であれば静的 IP アドレス) を使用できます。 完全修飾ドメイン名を使用すると動作が保証されます。 詳細については、「可用性レプリカを追加または変更する場合のエンドポイント URL の指定 (SQL Server)」を参照してください。

ネットワーク アクセス

可用性レプリカをホストしている各サーバー インスタンスは、TCP で他の各サーバー インスタンスのポートにアクセスできる必要があります。 これは、サーバー インスタンスが相互に信頼関係を持たない別のドメイン (信頼されていないドメイン) に存在する場合に特に重要になります。

エンドポイント アクセス (SQLServer エラー 1418)

この SQL Server メッセージは、エンドポイントの URL で指定されたサーバー ネットワーク アドレスに到達できないか、そのアドレスが存在しないことを意味し、ネットワーク アドレス名を確認してコマンドを再実行するように示しています。 詳細については、「MSSQLSERVER_1418」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

データベースの参加の失敗 (SQL Server エラー 35250)

ここでは、プライマリ レプリカへの接続がアクティブでないためにセカンダリ データベースを可用性グループに参加させることができない問題について、考え得る原因と解決策について説明します。

解決策:

  1. ファイアウォールの設定を調べて、プライマリ レプリカをホストするサーバー インスタンスとセカンダリ レプリカをホストするサーバー インスタンス (既定ではポート 5022) の間でエンドポイント ポート通信が許可されているかどうかを確認します。

  2. ネットワーク サービス アカウントにエンドポイントへの接続権限があるかどうかを確認します。

読み取り専用ルーティングが正常に動作しない

次の構成値の設定を確認し、必要に応じて修正します。

     

項目

動作

コメント

リンク

チェック ボックス

現在のプライマリ レプリカ

可用性グループ リスナーがオンラインであることを確認します。

リスナーがオンラインになっているかどうかを確認するには:

SELECT * FROM sys.dm_tcp_listener_states;

オフラインのリスナーを再起動するには:

ALTER AVAILABILITY GROUP myAG RESTART LISTENER 'myAG_Listener';

sys.dm_tcp_listener_states (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)

チェック ボックス

現在のプライマリ レプリカ

READ_ONLY_ROUTING_LIST に、読み取り可能なセカンダリ レプリカをホストしているサーバー インスタンスだけが含まれていることを確認します。

  • 読み取り可能なセカンダリ レプリカを識別するには:

    sys.availability_replicas (secondary_role_allow_connections_desc 列)

  • 読み取り専用ルーティング リストを表示するには:

    sys.availability_read_only_routing_lists

  • 読み取り専用ルーティング リストを変更するには:

    ALTER AVAILABILITY GROUP

sys.availability_replicas (Transact-SQL)

sys.availability_read_only_routing_lists (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)

チェック ボックス

read_only_routing_list にあるすべてのレプリカ

READ_ONLY_ROUTING_URL ポートが Windows ファイアウォールでブロックされていないことを確認します。

データベース エンジン アクセスを有効にするための Windows ファイアウォールを構成する

チェック ボックス

read_only_routing_list にあるすべてのレプリカ

SQL Server 構成マネージャーで次のことを確認します:

  • SQL Server のリモート接続が有効になっている。

  • TCP/IP が有効になっている。

  • IP アドレスが正しく構成されている。

サーバー プロパティの表示または変更

特定の TCP ポートで受信待ちするようにサーバーを構成する方法 (SQL Server 構成マネージャー)

チェック ボックス

read_only_routing_list にあるすべてのレプリカ

_ONLY_ROUTING_URL (TCP://system-address:port) に正しい完全修飾ドメイン名 (FQDN) とポート番号が含まれていることを確認します。

AlwaysOn の read_only_routing_url の計算

sys.availability_replicas (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)

チェック ボックス

クライアント システム

クライアント ドライバーが読み取り専用のルーティングをサポートしていることを確認します。

AlwaysOn クライアント接続 (SQL Server)

[トップに戻る] リンクで使用される矢印アイコンこのページのトップへ

関連タスク

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

関連コンテンツ

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

関連項目

概念

データベース ミラーリングと AlwaysOn 可用性グループのトランスポート セキュリティ (SQL Server)

AlwaysOn 可用性グループの前提条件、制限事項、および推奨事項 (SQL Server)

その他の技術情報

クライアント ネットワーク構成