次の方法で共有


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

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

注意

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

このトピックの内容

Section 説明
AlwaysOn 可用性グループが有効になっていない SQL ServerのインスタンスがAlways On可用性グループに対して有効になっていない場合、インスタンスは可用性グループの作成をサポートしていないため、可用性レプリカをホストできません。
Accounts 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. パートナーを同じドメイン ユーザー アカウントで実行している場合は、両方の master データベースに正しいユーザー ログインが自動的に存在します。 この場合は、データベースのセキュリティ構成が単純になるため、望ましいといえます。

    2. 2 つのサーバー インスタンスが別々のアカウントで実行されている場合、リモート サーバー インスタンスの master にそれぞれのアカウントのログインを作成する必要があります。また、そのログインには、対応するサーバー インスタンスのデータベース ミラーリング エンドポイントに接続するための 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. ネットワーク サービス アカウントにエンドポイントへの接続権限があるかどうかを確認します。

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

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

対象 アクション 説明 Link
チェックボックス 現在のプライマリ レプリカ 可用性グループ リスナーがオンラインであることを確認します。 リスナーがオンラインになっているかどうかを確認するには:

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 アドレスが正しく構成されている。
- サーバー プロパティの表示または変更 (SQL Server)

特定の TCP ポートで受信待ちするようにサーバーを構成する方法 (SQL Server 構成マネージャー)
チェックボックス read_only_routing_list にあるすべてのレプリカ READ_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)

Related Tasks

関連コンテンツ

参照

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