Windows 認証でミラーリング エンドポイントを作成する方法 (Transact-SQL)

データベース ミラーリング サーバーのインスタンスごとに、インスタンスのデータベース ミラーリング エンドポイントに割り当てられた一意のリスナ ポートが必要です。サーバー インスタンスは、単一のポートを備えたデータベース ミラーリング エンドポイントを 1 つだけ持つことができます。データベース ミラーリング エンドポイントは、作成される際に、ローカル システムで利用できる任意のポートを使用できます。サーバー インスタンス上のすべてのデータベース ミラーリング セッションはそのポートでリッスンし、データベース ミラーリングに対するすべての着信接続はそのポートを使用します。

システム管理者は、エンドポイントを作成するときに、サーバー インスタンスの認証方法と暗号化方法を指定します。

重要な注意事項重要

データベース ミラーリング エンドポイントが存在し、既に使用されている場合、サーバー インスタンスのすべてのセッションでそのエンドポイントを使用することをお勧めします。使用中のエンドポイントを削除すると、既存のセッションの接続が切断されます。セッションにミラーリング監視サーバーが設定されている場合、データベース ミラーリングのエンドポイントを削除すると、そのセッションのプリンシパル サーバーがクォーラムを失う可能性があります。プリンシパル サーバーがクォーラムを失うと、データベースがオフラインになりユーザー接続が切断されます。詳細については、「クォーラム : データベースの可用性にミラーリング監視サーバーが与える影響」を参照してください。

Windows 認証を使用してミラーリング エンドポイントを作成するには

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

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

    SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints 
    
    SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints 
    
    重要な注意事項重要

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

  3. 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
      
      SELECT name, port FROM sys.tcp_endpoints
      
      重要な注意事項重要

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

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

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

      定義

      DISABLED

      接続を経由して送信されるデータが暗号化されないことを示します。

      SUPPORTED

      相手側のエンドポイントで SUPPORTED または REQUIRED のいずれかが指定されている場合のみ、データが暗号化されることを示します。

      REQUIRED

      接続を経由して送信されるデータを暗号化する必要があることを示します。

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

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

      AES RC4 では、エンドポイントが暗号化アルゴリズムのネゴシエートを行う際に、AES アルゴリズムを優先することが示されます。RC4 AES では、エンドポイントが暗号化アルゴリズムのネゴシエートを行う際に、RC4 アルゴリズムを優先することが示されます。両方のエンドポイントで 2 つのアルゴリズムが異なる順序で指定されている場合、接続を受け入れる側のエンドポイントの指定が優先されます。

      注意

      RC4 は、AES よりもかなり高速ですが、比較的弱いアルゴリズムです。それに対して、AES は比較的強いアルゴリズムです。したがって、AES アルゴリズムを使用することをお勧めします。

    • <role> では、サーバーが実行できるロールが定義されます。ROLE の指定は必須です。

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

      注意

      SQL Server Express の場合は、WITNESS オプションのみを使用できます。

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

    注意

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

使用例

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

サーバー インスタンスの役割

ホスト コンピュータ名

パートナー (初期はプリンシパル)

SQLHOST01\.

パートナー (初期はミラー)

SQLHOST02\.

ミラーリング監視

SQLHOST03\.

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

各サーバー インスタンスは、パートナーまたはミラーリング監視サーバーのいずれかとしてのみ機能するように制限します。各サーバーのエンドポイントは役割を明示 (ROLE=PARTNER または ROLE=WITNESS) します。

重要な注意事項重要

各サーバー インスタンスにはエンドポイントを 1 つしか作成できません。したがって、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

--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

セキュリティの設定、ミラー データベースの準備、パートナーの設定、およびミラーリング監視サーバーの追加を網羅した例については、「データベース ミラーリングの設定」を参照してください。