Windows 認証でのデータベース ミラーリング エンドポイントの作成 (Transact-SQL)

適用対象:SQL Server

このトピックでは、Transact-SQL を使用して、Windows 認証を使用するデータベース ミラーリング エンドポイントを SQL Server で作成する方法について説明します。 データベース ミラーリングまたは Always On 可用性グループをサポートするには、SQL Server の各インスタンスにデータベース ミラーリング エンドポイントが必要です。 サーバー インスタンスは、単一のポートを備えたデータベース ミラーリング エンドポイントを 1 つだけ持つことができます。 データベース ミラーリング エンドポイントは、作成される際に、ローカル システムで利用できる任意のポートを使用できます。 サーバー インスタンス上のすべてのデータベース ミラーリング セッションはそのポートでリッスンし、データベース ミラーリングに対するすべての着信接続はそのポートを使用します。

重要

データベース ミラーリング エンドポイントが存在し、既に使用されている場合、そのエンドポイントを使用することをお勧めします。 使用中のエンドポイントを削除すると、既存のセッションが切断されます。

このトピックの内容

  • 始める前に:セキュリティ

  • データベース ミラーリング エンドポイントを作成するには、次を使用します:Transact-SQL

始める前に

セキュリティ

サーバー インスタンスの認証方法と暗号化方法は、システム管理者が設定します。

警告

RC4 アルゴリズムは非推奨とされます。 この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 AES を使用することをお勧めします。

アクセス許可

CREATE ENDPOINT アクセス許可、または sysadmin 固定サーバー ロールのメンバーシップが必要です。 詳細については、「エンドポイントのアクセス許可GRANT (Transact-SQL)」を参照してください。

Transact-SQL の使用

Windows 認証を使用するデータベース ミラーリング エンドポイントを作成するには

  1. データベース ミラーリング エンドポイントを作成する SQL Server のインスタンスに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次のステートメントを使用して、データベース ミラーリング エンドポイントが既に存在するかどうかを判断します。

    SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints;   
    

    重要

    サーバー インスタンスにデータベース ミラーリング エンドポイントが既に存在する場合、サーバー インスタンス上に確立する他のセッションにそのエンドポイントが使用されます。

  4. Transact-SQL を使用して、Windows 認証を使用するエンドポイントを作成するには、CREATE ENDPOINT ステートメントを使用します。 ステートメントは、通常、次のような形式になります。

    CREATE ENDPOINT *\<endpointName>*  
    
    STATE=STARTED  
    
    AS TCP ( LISTENER_PORT = *\<listenerPortList>* )  
    
    FOR DATABASE_MIRRORING  
    
    (  
    
    [ AUTHENTICATION = **WINDOWS** [ *\<authorizationMethod>* ]  
    
    ]  
    
    [ [**,**] ENCRYPTION = **REQUIRED**  
    
    [ ALGORITHM { *\<algorithm>* } ]  
    
    ]  
    
    [**,**] ROLE = *\<role>*  
    
    )  
    

    各値の説明:

    • <endpointName> は、サーバー インスタンスのデータベース ミラーリング エンドポイントの一意名です。

    • STARTED は、エンドポイントを起動し、接続の待ち受けを開始することを指定します。 データベース ミラーリング エンドポイントは、通常、STARTED 状態で作成されます。 STOPPED 状態 (既定) または DISABLED 状態でセッションを開始することもできます。

    • <listenerPortList> は、サーバーがデータベース ミラーリング メッセージをリッスンする単一のポート番号 (nnnn) です。 TCP のみ使用できます。他のプロトコルを指定するとエラーが発生します。

      ポート番号は、コンピューター システムにつき 1 つだけ使用できます。 データベース ミラーリング エンドポイントは、作成される際に、ローカル システムで利用できる任意のポートを使用できます。 システムの TCP エンドポイントによって現在使用されているポートを識別するには、次の Transact-SQL ステートメントを使用します。

      SELECT name, port FROM sys.tcp_endpoints;  
      

      重要

      各サーバー インスタンスには、一意のリスナー ポートが 1 つだけ必要です。

    • Windows 認証の場合、エンドポイントで接続の認証に NTLM または Kerberos だけを使用する場合を除き、AUTHENTICATION オプションは省略可能です。 <authorizationMethod> では、NTLM、KERBEROS、NEGOTIATE のいずれかで、接続の認証に使用する方法を指定します。 既定値の NEGOTIATE を使用すると、エンドポイントでは、使用する Windows ネゴシエーション プロトコルに NTLM または Kerberos のいずれかが選択されます。 ネゴシエーションでは、相手側のエンドポイントの認証レベルに応じて、認証ありまたは認証なしの接続が可能になります。

      可用性グループ (AG) エンドポイント間の通信に Kerberos 認証を使うには、AG によって使用されるデータベース ミラーリング エンドポイントの Kerberos 接続用のサービス プリンシパル名を登録します。

    • 既定では、ENCRYPTION は REQUIRED に設定されます。 これは、このエンドポイントへのすべての接続に暗号化を使用する必要があることを意味します。 ただし、エンドポイントで暗号化を無効にしたり、オプションにできます。 選択肢は次のとおりです。

      定義
      無効 接続を経由して送信されたデータが暗号化されないことを指定します。
      サポート対象 反対側のエンドポイントで SUPPORTED または REQUIRED が指定されている場合に限り、データを暗号化することを指定します。
      必須 接続を経由して送信されるデータを暗号化する必要があることを示します。

      あるエンドポイントで暗号化が必要な場合は、他のエンドポイントで ENCRYPTION が SUPPORTED または REQUIRED に設定されている必要があります。

    • <algorithm> には、エンドポイントの暗号化標準を指定するオプションが用意されています。 <algorithm> の値は、RC4、AES、AES RC4、または RC4 AES の各アルゴリズムのいずれかまたはそれらの組み合わせになります。

      データベース ミラーリング エンドポイントの AES アルゴリズムでは、128 ビットのキー長が使われます。

      AES RC4 では、エンドポイントが暗号化アルゴリズムのネゴシエートを行う際に、AES アルゴリズムを優先することが示されます。 RC4 AES では、エンドポイントが暗号化アルゴリズムのネゴシエートを行う際に、RC4 アルゴリズムを優先することが示されます。 両方のエンドポイントで両方のアルゴリズムを異なる順序で指定した場合、接続を受け入れた方のエンドポイントが優先されます。 異なるサーバー間の接続エラーを回避するために、同じアルゴリズムを明示的に指定します。

      警告

      RC4 アルゴリズムは非推奨とされます。 この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 AES を使用することをお勧めします。

    • <role> では、サーバーで実行できるロールが定義されます。 ROLEを指定する必要があります。 ただし、エンドポイントのロールが適用されるのは、データベース ミラーリングの場合のみです。 Always On 可用性グループでは、エンドポイントのロールが無視されます。

      サーバー インスタンスが 1 つのデータベース ミラーリング セッションに対して 1 つのロールとして機能し、別のセッションに対して異なるロールとして機能できるようにするには、 ROLE=ALL を指定します。 パートナーまたはミラーリング監視サーバーのいずれかになるようにサーバー インスタンスを制限するには、ROLE = PARTNER または ROLE = WITNESS をそれぞれ指定します。

      SQL Server の各エディションのデータベース ミラーリング オプションの詳細については、「SQL Server 2016 の各エディションでサポートされる機能」を参照してください。

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

    既存のエンドポイントを変更するには、 ALTER ENDPOINT (Transact-SQL) を使用します。

例: データベース ミラーリングをサポートするエンドポイントの作成 (Transact-SQL)

次の例では、3 台の異なるコンピューター システムに既定のサーバー インスタンスのデータベース ミラーリング エンドポイントを作成します。

サーバー インスタンスの役割 ホスト コンピューター名
パートナー(当初はプリンシパルの役割) SQLHOST01\.
パートナー(当初はミラーの役割) SQLHOST02\.
ウィットネス SQLHOST03\.

この例では、3 つのエンドポイントすべてでポート番号 7022 を使用しますが、利用可能なポート番号であればどれでも使用できます。 エンドポイントでは既定の Windows 認証を使用するので、AUTHENTICATION オプションは不要です。 エンドポイントはいずれも Windows 認証の既定動作に従い接続のための認証方法をネゴシエートする仕様なので、ENCRYPTION オプションも不要です。 また、すべてのエンドポイントで、既定動作に従い暗号化が必要です。

各サーバー インスタンスは、パートナーまたは監視サーバーのいずれかの役割のみを果たすように制限されており、各サーバーのエンドポイントでは、どちらの役割であるか (ROLE=PARTNER または ROLE=WITNESS) が明示的に指定されます。

重要

各サーバー インスタンスにはエンドポイントを 1 つしか作成できません。 そのため、サーバー インスタンスを一部のセッションではパートナーにし、他のセッションではミラーリング監視サーバーにする場合は、ROLE=ALL を指定します。

--Endpoint for initial principal server instance, which  
--is the only server instance running on SQLHOST01.  
CREATE ENDPOINT endpoint_mirroring  
    STATE = STARTED  
    AS TCP ( LISTENER_PORT = 7022 )  
    FOR DATABASE_MIRRORING (ROLE=PARTNER);  
GO  
--Endpoint for initial mirror server instance, which  
--is the only server instance running on SQLHOST02.  
CREATE ENDPOINT endpoint_mirroring  
    STATE = STARTED  
    AS TCP ( LISTENER_PORT = 7022 )  
    FOR DATABASE_MIRRORING (ROLE=PARTNER);  
GO  
--Endpoint for witness server instance, which  
--is the only server instance running on SQLHOST03.  
CREATE ENDPOINT endpoint_mirroring  
    STATE = STARTED  
    AS TCP ( LISTENER_PORT = 7022 )  
    FOR DATABASE_MIRRORING (ROLE=WITNESS);  
GO  

関連タスク

データベース ミラーリング エンドポイントを構成するには

データベース ミラーリング エンドポイントに関する情報を表示するには

参照

ALTER ENDPOINT (Transact-SQL)
暗号化アルゴリズムの選択
CREATE ENDPOINT (Transact-SQL)
サーバー ネットワーク アドレスの指定 (データベース ミラーリング)
Windows 認証を使用したデータベース ミラーリングの設定の例 (Transact-SQL)
データベース ミラーリング エンドポイント (SQL Server)