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

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックでは、サーバー インスタンスでの Always On 可用性グループAlways On availability groupsの構成に関する一般的な問題のトラブルシューティングに役立つ情報を提供します。This topic provides information to help you troubleshoot typical problems with configuring server instances for Always On 可用性グループAlways On availability groups. 構成に関する一般的な問題には、 Always On 可用性グループAlways On availability groups が無効になっている、アカウントが適切に構成されていない、データベース ミラーリング エンドポイントが存在しない、エンドポイントにアクセスできない (SQL Server エラー 1418)、ネットワーク アクセスが存在しない、データベース参加コマンドが失敗する (SQL Server エラー 35250) などがあります。Typical configuration problems include Always On 可用性グループAlways On availability groups is disabled, accounts are incorrectly configured, the database mirroring endpoint does not exist, the endpoint is inaccessible (SQL Server Error 1418), network access does not exist, and a join database command fails (SQL Server Error 35250).

注意

Always On 可用性グループAlways On availability groups の前提条件を満たしていることを確認してください。Ensure that you are meeting the Always On 可用性グループAlways On availability groups prerequisites. 詳細については、「 Always On 可用性グループの前提条件、制限事項、および推奨事項 (SQL Server)の構成に関する一般的な問題のトラブルシューティングに役立つ情報を提供します。For more information, see Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

このトピックの内容In This Topic:

セクションSection [説明]Description
Always On 可用性グループが有効になっていないAlways On Availability Groups Is Not Enabled SQL ServerSQL Server のインスタンスで Always On 可用性グループAlways On availability groupsが有効になっていない場合、そのインスタンスでは可用性グループの作成がサポートされず、可用性レプリカをホストできません。If an instance of SQL ServerSQL Server is not enabled for Always On 可用性グループAlways On availability groups, the instance does not support availability group creation and cannot host any availability replicas.
AccountsAccounts SQL ServerSQL Server を実行しているアカウントを適切に構成するための要件について説明します。Discusses requirements for correctly configuring the accounts under which SQL ServerSQL Server is running.
エンドポイントEndpoints サーバー インスタンスのデータベース ミラーリング エンドポイントに関する問題の診断方法について説明します。Discusses how to diagnose issues with the database mirroring endpoint of a server instance.
システム名System name エンドポイントの URL でサーバー インスタンスのシステム名を指定するためのその他の方法について概要を説明します。Summarizes the alternatives for specifying the system name of a server instance in an endpoint URL.
ネットワーク アクセスNetwork access 可用性レプリカをホストしている各サーバー インスタンスが TCP で他の各サーバー インスタンスのポートにアクセスできる必要があるという要件について説明します。Documents the requirement that each server instance that is hosting an availability replica must be able to access the port of each of the other server instances over TCP.
エンドポイント アクセス (SQLServer エラー 1418)Endpoint Access (SQL Server Error 1418) この SQL ServerSQL Server エラー メッセージに関する情報が含まれます。Contains information about this SQL ServerSQL Server error message.
データベースの参加の失敗 (SQL Server エラー 35250)Join Database Fails (SQL Server Error 35250) プライマリ レプリカへの接続がアクティブでないためにセカンダリ データベースを可用性グループに参加させることができない問題について、考え得る原因と解決策について説明します。Discusses the possible causes and resolution of a failure to join secondary databases to an availability group because the connection to the primary replica is not active.
読み取り専用ルーティングが正常に動作しないRead-Only Routing is Not Working Correctly
関連タスクRelated Tasks SQL Server 2017SQL Server 2017 オンライン ブックの中の、可用性グループ構成のトラブルシューティングに特に関連するタスク指向のトピックの一覧が含まれます。Contains a list of task-oriented topics in SQL Server 2017SQL Server 2017 Books Online that are particularly relevant to troubleshooting an availability group configuration.
関連コンテンツRelated Content SQL ServerSQL Server オンライン ブックの外部にある関連したリソースの一覧が含まれます。Contains a list of relevant resources that are external to SQL ServerSQL Server Books Online.

Always On 可用性グループが有効になっていないAlways On Availability Groups Is Not Enabled

Always On 可用性グループAlways On availability groups 機能は、 SQL Server 2017SQL Server 2017の各インスタンスで有効になっている必要があります。The Always On 可用性グループAlways On availability groups feature must be enabled on each of the instances of SQL Server 2017SQL Server 2017. 詳細については、「Always On 可用性グループの有効化と無効化 (SQL Server)」を参照してください。For more information, see Enable and Disable Always On Availability Groups (SQL Server).

AccountsAccounts

SQL ServerSQL Server の実行に使用するアカウントは、正しく構成されている必要があります。The accounts under which SQL ServerSQL Server is running must be correctly configured.

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

    1. パートナーを同じドメイン ユーザー アカウントで実行している場合は、両方の master データベースに正しいユーザー ログインが自動的に存在します。If the partners run as the same domain user account, the correct user logins exist automatically in both master databases. この場合は、データベースのセキュリティ構成が単純になるため、望ましいといえます。This simplifies the security configuration the database and is recommended.

    2. 2 つのサーバー インスタンスが別々のアカウントで実行されている場合、リモート サーバー インスタンスの master にそれぞれのアカウントのログインを作成する必要があります。また、そのログインには、対応するサーバー インスタンスのデータベース ミラーリング エンドポイントに接続するための CONNECT 権限を付与する必要があります。If two server instances run as different accounts, the login each account must be created in master on the remote server instance, and that login must be granted CONNECT permissions to connect to the database mirroring endpoint of that server instance. 詳細については、「データベース ミラーリングまたは Always On 可用性グループのログイン アカウントの設定 (SQL Server)」を参照してください。For more information, seeSet Up Login Accounts for Database Mirroring or Always On Availability Groups (SQL Server).

  2. SQL ServerSQL Server がビルトイン アカウント (Local System、Local Service、Network Service など) で実行されている場合または非ドメイン アカウントで実行されている場合は、エンドポイント認証に証明書を使用する必要があります。If SQL ServerSQL Server is running as a built-in account, such as Local System, Local Service, or Network Service, or a nondomain account, you must use certificates for endpoint authentication. サービス アカウントで同じドメインのドメイン アカウントを使用している場合は、すべてのレプリカの場所の各サービス アカウントに対して CONNECT アクセスを付与するか、証明書を使用できます。If your service accounts are using domain accounts in the same domain, you can choose to grant CONNECT access for each service account on all the replica locations or you can use certificates. 詳細については、「データベース ミラーリング エンドポイントでの証明書の使用 (Transact-SQL)」を参照してください。For more information, seeUse Certificates for a Database Mirroring Endpoint (Transact-SQL).

エンドポイントEndpoints

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

  1. 可用性レプリカ (各 SQL ServerSQL Server レプリカの場所 ) をホストするの各インスタンスにデータベース ミラーリング エンドポイントがあることを確認します。Make sure that each instance of SQL ServerSQL Server that is going to host an availability replica (each replica location) has a database mirroring endpoint. データベース ミラーリング エンドポイントが特定のサーバー インスタンスに存在するかどうかを確認するには、sys.database_mirroring_endpoints カタログ ビューを使用します。To determine whether a database mirroring endpoint exists on a given server instance, use the sys.database_mirroring_endpoints catalog view. 詳細については、「Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)」または「データベース ミラーリング エンドポイントで発信接続に証明書を使用できるようにする (Transact-SQL)」を参照してください。For more information, see either Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL) or Allow a Database Mirroring Endpoint to Use Certificates for Outbound Connections (Transact-SQL).

  2. ポート番号が適切であることを確認します。Check that the port numbers are correct.

    サーバー インスタンスのデータベース ミラーリング エンドポイントに現在関連付けられているポートを識別するには、次の Transact-SQLTransact-SQL ステートメントを使用します。To identify the port currently associated with database mirroring endpoint of a server instance, use the following Transact-SQLTransact-SQL statement:

    SELECT type_desc, port FROM sys.tcp_endpoints;  
    GO  
    
  3. 説明が困難な Always On 可用性グループAlways On availability groups のセットアップに関する問題については、各サーバー インスタンスを調査して、それぞれが正しいポートでリッスンしているかどうかを確認することをお勧めします。For Always On 可用性グループAlways On availability groups setup issues that are difficult to explain, we recommend that you inspect each server instance to determine whether it is listening on the correct ports.

  4. エンドポイントが開始されていること (STATE = STARTED) を確認します。Make sure that the endpoints are started (STATE=STARTED). 各サーバー インスタンスで、次の Transact-SQLTransact-SQL ステートメントを使用します。On each server instance, use the following Transact-SQLTransact-SQL statement:

    SELECT state_desc FROM sys.database_mirroring_endpoints  
    

    state_desc 列の詳細については、「sys.database_mirroring_endpoints (Transact-SQL)」を参照してください。For more information about the state_desc column, see sys.database_mirroring_endpoints (Transact-SQL).

    エンドポイントを開始するには、次の Transact-SQLTransact-SQL ステートメントを使用します。To start an endpoint, use the following Transact-SQLTransact-SQL statement:

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

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

  5. 他のサーバーからのログインに、CONNECT 権限があることを確認します。Make sure that the login from the other server has CONNECT permission. あるエンドポイントに対して CONNECT 権限のあるユーザーを確認するには、各サーバー インスタンスで、次の Transact-SQLTransact-SQL ステートメントを使用します。To determine who has CONNECT permission for an endpoint, on each server instance use the following Transact-SQLTransact-SQL statement:

    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  
    
    

System NameSystem Name

エンドポイントの URL におけるサーバー インスタンスのシステム名には、システムを明確に識別できる任意の名前を使用できます。For the system name of a server instance in an endpoint URL, you can use any name that unambiguously identifies the system. サーバー アドレスには、システム名 (システムが同じドメインに存在する場合)、完全修飾ドメイン名、または IP アドレス (可能であれば静的 IP アドレス) を使用できます。The server address can be a system name (if the systems are in the same domain), a fully qualified domain name, or an IP address (preferably, a static IP address). 完全修飾ドメイン名を使用すると動作が保証されます。Using the fully qualified domain name is guaranteed to work. 詳細については、「 可用性レプリカを追加または変更する場合のエンドポイント URL の指定 (SQL Server)の構成に関する一般的な問題のトラブルシューティングに役立つ情報を提供します。For more information, see Specify the Endpoint URL When Adding or Modifying an Availability Replica (SQL Server).

Network AccessNetwork Access

可用性レプリカをホストしている各サーバー インスタンスは、TCP で他の各サーバー インスタンスのポートにアクセスできる必要があります。Each server instance that is hosting an availability replica must be able to access the port of each of the other server instance over TCP. これは、サーバー インスタンスが相互に信頼関係を持たない別のドメイン (信頼されていないドメイン) に存在する場合に特に重要になります。This is especially important if the server instances are in different domains that do not trust each other (untrusted domains).

エンドポイント アクセス (SQLServer エラー 1418)Endpoint Access (SQL Server Error 1418)

この SQL ServerSQL Server メッセージは、エンドポイントの URL で指定されたサーバー ネットワーク アドレスに到達できないか、そのアドレスが存在しないことを意味し、ネットワーク アドレス名を確認してコマンドを再実行するように示しています。This SQL ServerSQL Server message indicates that the server network address specified in the endpoint URL cannot be reached or does not exist, and it suggests that you verify the network address name and reissue the command.

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

ここでは、プライマリ レプリカへの接続がアクティブでないためにセカンダリ データベースを可用性グループに参加させることができない問題について、考え得る原因と解決策について説明します。This section discusses the possible causes and resolution of a failure to join secondary databases to the availability group because the connection to the primary replica is not active.

解決方法:Resolution:

  1. ファイアウォールの設定を調べて、プライマリ レプリカをホストするサーバー インスタンスとセカンダリ レプリカをホストするサーバー インスタンス (既定ではポート 5022) の間でエンドポイント ポート通信が許可されているかどうかを確認します。Check the firewall setting to see if whether allows the endpoint port communication between the server instances that host primary replica and the secondary replica (port 5022 by default).

  2. ネットワーク サービス アカウントにエンドポイントへの接続権限があるかどうかを確認します。Check whether the network service account has connect permission to the endpoint.

読み取り専用ルーティングが正常に動作しないRead-Only Routing is Not Working Correctly

次の構成値の設定を確認し、必要に応じて修正します。Verify the following configuration values settings and correct them if necessary.

対象On... 操作Action コメントComments リンクLink
チェック ボックスCheckbox 現在のプライマリ レプリカCurrent primary replica 可用性グループ リスナーがオンラインであることを確認します。Ensure that the availability group listener is online. リスナーがオンラインになっているかどうかを確認するには:To verify whether the listener is online:

SELECT * FROM sys.dm_tcp_listener_states;

オフラインのリスナーを再起動するには:To restart an offline listener:

ALTER AVAILABILITY GROUP myAG RESTART LISTENER 'myAG_Listener';
sys.dm_tcp_listener_states (Transact-SQL)sys.dm_tcp_listener_states (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)ALTER AVAILABILITY GROUP (Transact-SQL)
チェック ボックスCheckbox 現在のプライマリ レプリカCurrent primary replica READ_ONLY_ROUTING_LIST に、読み取り可能なセカンダリ レプリカをホストしているサーバー インスタンスだけが含まれていることを確認します。Ensure that the READ_ONLY_ROUTING_LIST contains only server instances that are hosting a readable secondary replica. 読み取り可能なセカンダリ レプリカを識別するには: sys.availability_replicas (secondary_role_allow_connections_desc 列)To identify readable secondary replicas: sys.availability_replicas (secondary_role_allow_connections_desc column)

読み取り専用ルーティング リストを表示するには: sys.availability_read_only_routing_listsTo view a read-only routing list: sys.availability_read_only_routing_lists

読み取り専用ルーティング リストを変更するには: ALTER AVAILABILITY GROUPTo change a read-only routing list: ALTER AVAILABILITY GROUP
sys.availability_replicas (Transact-SQL)sys.availability_replicas (Transact-SQL)

sys.availability_read_only_routing_lists (Transact-SQL)sys.availability_read_only_routing_lists (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)ALTER AVAILABILITY GROUP (Transact-SQL)
チェック ボックスCheckbox read_only_routing_list にあるすべてのレプリカEvery replica in the read_only_routing_list READ_ONLY_ROUTING_URL ポートが Windows ファイアウォールでブロックされていないことを確認します。Ensure that the Windows firewall is not blocking the READ_ONLY_ROUTING_URL port. - データベース エンジン アクセスを有効にするための Windows ファイアウォールを構成するConfigure a Windows Firewall for Database Engine Access
チェック ボックスCheckbox read_only_routing_list にあるすべてのレプリカEvery replica in the read_only_routing_list SQL ServerSQL Server 構成マネージャーで次のことを確認します:In SQL ServerSQL Server Configuration Manager, verify that:

SQL Server のリモート接続が有効になっている。SQL Server remote connectivity is enabled.

TCP/IP が有効になっている。TCP/IP is enabled.

IP アドレスが正しく構成されている。The IP addresses are configured correctly.
- サーバー プロパティの表示または変更 (SQL Server)View or Change Server Properties (SQL Server)

特定の TCP ポートで受信待ちするようにサーバーを構成する方法 (SQL Server 構成マネージャー)Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager)
チェック ボックスCheckbox read_only_routing_list にあるすべてのレプリカEvery replica in the read_only_routing_list READ_ONLY_ROUTING_URL (TCP://system-address:port) に正しい完全修飾ドメイン名 (FQDN) とポート番号が含まれていることを確認します。Ensure that the READ_ONLY_ROUTING_URL (TCP://system-address:port) contains the correct fully-qualified domain name (FQDN) and port number. - AlwaysOn の read_only_routing_url の計算Calculating read_only_routing_url for Always On

sys.availability_replicas (Transact-SQL)sys.availability_replicas (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)ALTER AVAILABILITY GROUP (Transact-SQL)
チェック ボックスCheckbox クライアント システムClient system クライアント ドライバーが読み取り専用のルーティングをサポートしていることを確認します。Verify that the client driver supports read-only routing. - Always On クライアント接続 (SQL Server)Always On Client Connectivity (SQL Server)

関連タスクRelated Tasks

関連コンテンツRelated Content

参照See Also

データベース ミラーリングと Always On 可用性グループのトランスポート セキュリティ (SQL Server) Transport Security for Database Mirroring and Always On Availability Groups (SQL Server)
クライアント ネットワーク構成 Client Network Configuration
AlwaysOn 可用性グループの前提条件、制限事項、および推奨事項 (SQL Server)Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)