次の方法で共有


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

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

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

このトピックの内容

セクション 説明
AlwaysOn 可用性グループが有効になっていない SQL Server のインスタンスが Always On 可用性グループに対して有効になっていない場合、インスタンスは可用性グループの作成をサポートせず、可用性レプリカをホストできません。
アカウント SQL Server を実行しているアカウントを適切に構成するための要件について説明します。
エンドポイント サーバー インスタンスのデータベース ミラーリング エンドポイントに関する問題の診断方法について説明します。
システム名 エンドポイント URL でサーバー インスタンスのシステム名を指定するための代替手段を要約します。
ネットワーク アクセス 可用性レプリカをホストしている各サーバー インスタンスが TCP で他の各サーバー インスタンスのポートにアクセスできる必要があるという要件について説明します。
エンドポイント アクセス (SQLServer エラー 1418) この SQL Server エラー メッセージに関する情報が含まれます。
データベースの参加の失敗 (SQL Server エラー 35250) プライマリ レプリカへの接続がアクティブではないためにセカンダリ データベースを可用性グループに結合できない原因と解決策について説明します。
読み取り専用ルーティングが正常に動作しない
関連タスク 可用性グループ構成のトラブルシューティングに特に関連する SQL Server 2014 オンライン ブックのタスク指向トピックの一覧が含まれています。
関連コンテンツ SQL Server オンライン ブックの外部にある関連したリソースの一覧が含まれます。

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

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

アカウント

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

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

    1. パートナーが同じドメイン ユーザー アカウントとして実行されている場合、両方の マスター データベースに正しいユーザー ログインが自動的に存在します。 これにより、データベースのセキュリティ構成が簡略化され、推奨されます。

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

  2. SQL Server が、ローカル システム、ローカル サービス、ネットワーク サービスなどの組み込みアカウント、またはドメイン以外のアカウントとして実行されている場合は、エンドポイント認証に証明書を使用する必要があります。 サービス アカウントで同じドメインのドメイン アカウントを使用している場合は、すべてのレプリカの場所の各サービス アカウントに対して 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. 説明が難しい Always On 可用性グループのセットアップの問題については、各サーバー インスタンスを調べて、正しいポートでリッスンしているかどうかを判断することをお勧めします。 ポートの可用性の確認については、 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)

可用性グループを変更する (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)

可用性グループを変更する (Transact-SQL)
チェックボックス read_only_routing_list内のすべてのレプリカ READ_ONLY_ROUTING_URL ポートが Windows ファイアウォールでブロックされていないことを確認します。 - データベース エンジン アクセスを有効にするための Windows ファイアウォールを構成する
チェックボックス read_only_routing_list内のすべてのレプリカ SQL Server 構成マネージャーで、次のことを確認します。

SQL Server リモート接続が有効になっています。

TCP/IP が有効になっています。

IP アドレスは正しく構成されています。
- サーバーのプロパティの表示または変更 (SQL Server)

特定の TCP ポートで受信待ちするようにサーバーを構成する方法 (SQL Server 構成マネージャー)
チェックボックス "読み取り専用ルーティングリスト内のすべてのレプリカ" READ_ONLY_ROUTING_URL (TCP://system-address:port) に正しい完全修飾ドメイン名 (FQDN) とポート番号が含まれていることを確認します。 - AlwaysOn のread_only_routing_urlの計算

sys.availability_replicas (Transact-SQL)

可用性グループを変更する (Transact-SQL)
チェックボックス クライアント システム クライアント ドライバーが読み取り専用ルーティングをサポートしていることを確認します。 - AlwaysOn クライアント接続 (SQL Server)

関連タスク

関連コンテンツ

こちらもご覧ください

データベース ミラーリングと AlwaysOn 可用性グループのトランスポート セキュリティ (SQL Server)、AlwaysOn 可用性グループのクライアント ネットワーク構成の前提条件、制限事項、および推奨事項 (SQL Server)