CREATE ENDPOINT (Transact-SQL)

適用対象: SQL Server

エンドポイントを作成し、クライアント アプリケーションで使用可能なメソッドを含む、プロパティを定義します。 関連する権限については、「GRANT (エンドポイントの権限の許可) (Transact-SQL)」を参照してください。

CREATE ENDPOINT の構文は、論理的に次の 2 つの部分に分かれます。

  • 最初の部分は、AS から始まり FOR 句の前までの部分です。

    この部分では、トランスポート プロトコル (TCP) に固有の情報を指定し、エンドポイントの受信ポート番号、エンドポイント認証方法、およびエンドポイントへのアクセスを制限する IP アドレスのリスト (該当する場合) を設定します。

  • 2 番目は FOR 句から始まる部分です。

    この部分では、エンドポイントでサポートされているペイロードを定義します。 ペイロードには、サポートされている Transact-SQL、Service Broker、データベース ミラーリングのうちいずれかを指定できます。 ここでは、言語固有の情報も指定できます。

注意

ネイティブ XML Web サービス (SOAP/HTTP エンドポイント) は、SQL Server 2012 (11.x) では削除されています。

Transact-SQL 構文表記規則

構文

CREATE ENDPOINT endPointName [ AUTHORIZATION login ]  
[ STATE = { STARTED | STOPPED | DISABLED } ]  
AS { TCP } (  
   <protocol_specific_arguments>  
        )  
FOR { TSQL | SERVICE_BROKER | DATABASE_MIRRORING } (  
   <language_specific_arguments>  
        )  
  
<AS TCP_protocol_specific_arguments> ::=  
AS TCP (  
  LISTENER_PORT = listenerPort  
  [ [ , ] LISTENER_IP = ALL | ( xx.xx.xx.xx IPv4 address ) | ( '__:__1' IPv6 address ) ]  
  
)  
  
<FOR SERVICE_BROKER_language_specific_arguments> ::=  
FOR SERVICE_BROKER (  
   [ AUTHENTICATION = {   
            WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
      | CERTIFICATE certificate_name   
      | WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICATE certificate_name   
      | CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
    } ]  
   [ [ , ] ENCRYPTION = { DISABLED | { { SUPPORTED | REQUIRED }   
       [ ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ] }   
   ]  
   [ [ , ] MESSAGE_FORWARDING = { ENABLED | DISABLED } ]  
   [ [ , ] MESSAGE_FORWARD_SIZE = forward_size ]  
)  
  

<FOR DATABASE_MIRRORING_language_specific_arguments> ::=  
FOR DATABASE_MIRRORING (  
   [ AUTHENTICATION = {   
            WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
      | CERTIFICATE certificate_name   
      | WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICATE certificate_name   
      | CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
   [ [ [ , ] ] ENCRYPTION = { DISABLED | { { SUPPORTED | REQUIRED }   
       [ ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ] }   
  
    ]   
   [ , ] ROLE = { WITNESS | PARTNER | ALL }  
)  

引数

endPointName
作成するエンドポイントに割り当てられた名前です。 エンドポイントを更新または削除する場合に使用します。

AUTHORIZATION login
新規に作成されたエンドポイント オブジェクトの所有権が割り当てられる有効な SQL Server または Windows ログインを指定します。 AUTHORIZATION を指定しない場合、既定により、呼び出し元が新しく作成されたオブジェクトの所有者となります。

AUTHORIZATION を指定して所有権を割り当てるには、呼び出し元は指定された login に対する IMPERSONATE 権限が必要です。

ALTER ENDPOINT では AUTHORIZATION オプションを使用できません。 エンドポイントの作成時にのみ所有者を割り当てることができます。 所有権を再割当するには、DROP ENDPOINT (Transact-SQL) に関するページを参照し、この記事に戻ってエンドポイントを再作成してください。

STATE = { STARTED | STOPPED | DISABLED }
エンドポイントの作成時点での状態です。 エンドポイントの作成時点での状態を指定しない場合、既定値は STOPPED です。

STARTED
エンドポイントが開始され、接続をアクティブにリッスンしています。

DISABLED
エンドポイントは無効です。 この状態では、サーバーはポートの要求をリッスンしますが、クライアントにはエラーを返します。

STOPPED
エンドポイントは停止しています。 この状態の場合、サーバーはエンドポイントのポートをリッスンしておらず、エンドポイントの使用要求にも応答しません。

状態を変更するには、ALTER ENDPOINT (Transact-SQL) を使用します。

AS { TCP }
使用するトランスポート プロトコルを指定します。

FOR { TSQL | SERVICE_BROKER | DATABASE_MIRRORING }
ペイロードの種類を指定します。

現時点では、<language_specific_arguments> パラメーターに渡す Transact-SQL 言語固有の引数はありません。

TCP プロトコル オプション

以下は、TCP プロトコル オプションにのみ適用されます。

LISTENER_PORT =listenerPort
Service Broker TCP/IP プロトコルによって接続を受信待ちされるポート番号を指定します。 通常は 5022 が使用されますが、1024 から 32767 の範囲であればどの番号でも有効です。

LISTENER_IP = ALL | (4-part-ip ) | ( "ip_address_v6" )
エンドポイントが受信待ちする IP アドレスを指定します。 既定値は ALL です。 したがって、リスナーによって任意の有効な IP アドレスでの接続が許可されます。

完全修飾ドメイン名の代わりに IP アドレスを使用してデータベース ミラーリングを構成する (ALTER DATABASE SET PARTNER = partner_IP_address または ALTER DATABASE SET WITNESS = witness_IP_address) 場合は、ミラーリング エンドポイントの作成時に LISTENER_IP=ALL の代わりに LISTENER_IP =IP_address を指定する必要があります。

SERVICE_BROKER オプションと DATABASE_MIRRORING オプション

以下の AUTHENTICATION 引数と ENCRYPTION 引数は、SERVICE_BROKER オプションと DATABASE_MIRRORING オプションで共通です。

Note

SERVICE_BROKER 固有のオプションについては、後の「SERVICE_BROKER オプション」を参照してください。 DATABASE_MIRRORING 固有のオプションについては、後の「DATABASE_MIRRORING オプション」を参照してください。

AUTHENTICATION =<authentication_options>
このエンドポイントの接続に対する TCP/IP 認証要件を指定します。 既定値は WINDOWS です。

サポートされている認証方法は NTLM または Kerberos、あるいはその両方です。

重要

1 つのサーバー インスタンス上のすべてのミラーリング接続で、1 つのデータベース ミラーリング エンドポイントが使用されます。 追加のデータベース ミラーリング エンドポイントを作成しようとしても失敗します。

<authentication_options> ::=

WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]
エンドポイントを認証するために、Windows 認証プロトコルを使用してエンドポイントを接続することを指定します。 これは既定値です。

1 つの認証方法 (NTLM または KERBEROS) を指定した場合、その方法が常に認証プロトコルとして使用されます。 既定値の NEGOTIATE を指定すると、エンドポイントは Windows ネゴシエーション プロトコルを使用して NTLM か Kerberos のどちらかを選択します。

CERTIFICATE certificate_name
エンドポイントが、認証用の ID を設定するために certificate_name で指定された証明書を使用して接続を認証することを指定します。 反対側のエンドポイントは、指定された証明書の秘密キーと一致する公開キー付きの証明書を持っている必要があります。

WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICATE certificate_name
エンドポイントが Windows 認証を使用して接続を試み、それが失敗した場合は指定された証明書を使用することを指定します。

CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]
エンドポイントが、指定された証明書を使用して接続を試行され、それが失敗した場合は Windows 認証が使用されるよう指定します。

ENCRYPTION = { DISABLED | SUPPORTED | REQUIRED } [ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ]
プロセスで暗号化を使用するかどうかを指定します。 既定値は REQUIRED です。

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

SUPPORTED
反対側のエンドポイントで SUPPORTED または REQUIRED が指定されている場合に限り、データを暗号化することを指定します。

REQUIRED
このエンドポイントへの接続で暗号化を使用する必要があることを指定します。 したがって、このエンドポイントに接続するには、別のエンドポイントで ENCRYPTION が SUPPORTED または REQUIRED に設定されている必要があります。

必要に応じて、エンドポイントで使用される暗号化の形式を、ALGORITHM 引数を使用して次のように指定できます。

AES
エンドポイントで AES アルゴリズムを使用する必要があることを指定します。 これは、SQL Server 2016 (13.x) 以降の既定値です。

RC4
エンドポイントで RC4 アルゴリズムを使用する必要があることを指定します。 これは、SQL Server 2014 (12.x) 以降の既定値です。

Note

RC4 アルゴリズムは、旧バージョンとの互換性のためにのみサポートされています。 データベース互換性レベルが 90 または 100 の場合、新しい素材は RC4 または RC4_128 を使用してのみ暗号化できます。 (非推奨)。AES アルゴリズムのいずれかなど、新しいアルゴリズムを使用してください。 SQL Server 2012 (11.x) 以降のバージョンでは、どの互換性レベルでも、RC4 または RC4_128 を使用して暗号化された素材を暗号化解除できます。

AES RC4
2 つのエンドポイントが、AES アルゴリズムを優先するこのエンドポイントと暗号化アルゴリズムについてネゴシエートすることを指定します。

RC4 AES
2 つのエンドポイントで暗号化アルゴリズムをネゴシエートし、このエンドポイントでは RC4 アルゴリズムを優先することを示します。

Note

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

両方のエンドポイントで両方のアルゴリズムを異なる順序で指定した場合、接続を受け入れた方のエンドポイントが優先されます。

SERVICE_BROKER オプション

以下の引数は SERVICE_BROKER オプションに固有のものです。

MESSAGE_FORWARDING = { ENABLED | DISABLED }
このエンドポイントで受信された、別の場所にあるサービスのメッセージを転送するかどうかを指定します。

ENABLED
転送アドレスが使用可能であれば、メッセージを転送します。

DISABLED
別の場所にあるサービスのメッセージを破棄します。 これは既定値です。

MESSAGE_FORWARD_SIZE =forward_size
転送するメッセージを格納する際に使用するエンドポイントに対して割り当てる最大記憶容量を、MB 単位で指定します。

DATABASE_MIRRORING オプション

以下の引数は DATABASE_MIRRORING オプションに固有のものです。

ROLE = { WITNESS | PARTNER | ALL }
エンドポイントによってサポートされるデータベース ミラーリング ロールを指定します。

WITNESS
エンドポイントがミラーリング プロセスにおいてミラーリング監視ロールを実行できるようにします。

Note

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

PARTNER
エンドポイントがミラーリング プロセスにおいてパートナー ロールを実行できるようにします。

ALL
エンドポイントが、ミラーリング プロセスにおいてミラーリング監視およびパートナーの両方のロールを実行できるようにします。

これらのロールの詳細については、「データベース ミラーリング (SQL Server)」を参照してください。

Note

DATABASE_MIRRORING には既定のポートはありません。

解説

ENDPOINT DDL ステートメントは、ユーザー トランザクション内では実行できません。 変更対象となるエンドポイントが、アクティブなスナップショット分離レベル トランザクションで使用されている場合でも、ENDPOINT DDL ステートメントは失敗しません。

ENDPOINT に対する要求は、次のユーザーが実行できます。

  • sysadmin 固定サーバー ロールのメンバー

  • エンドポイントの所有者

  • エンドポイントで CONNECT 権限を与えられたユーザーまたはグループ

アクセス許可

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

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

次の例では、データベース ミラーリング エンドポイントを作成します。 使用可能などのポート番号も有効ですが、このエンドポイントではポート番号 7022 を使用します。 エンドポイントは、Kerberos のみを使用する Windows 認証を使用するように構成されます。 ENCRYPTION オプションは既定値以外の SUPPORTED に設定され、暗号化データも暗号化されていないデータもサポートします。 エンドポイントは、パートナーおよびミラーリング監視のロールの両方をサポートするように構成されます。

CREATE ENDPOINT endpoint_mirroring  
    STATE = STARTED  
    AS TCP ( LISTENER_PORT = 7022 )  
    FOR DATABASE_MIRRORING (  
       AUTHENTICATION = WINDOWS KERBEROS,  
       ENCRYPTION = SUPPORTED,  
       ROLE=ALL);  
GO  

特定の IPv4 アドレスおよびポートを参照する新しいエンドポイントを作成する

CREATE ENDPOINT ipv4_endpoint_special
STATE = STARTED
AS TCP (
    LISTENER_PORT = 55555, LISTENER_IP = (10.0.75.1)
)
FOR TSQL ();

GRANT CONNECT ON ENDPOINT::[TSQL Default TCP] TO public; -- Keep existing public permission on default endpoint for demo purpose
GRANT CONNECT ON ENDPOINT::ipv4_endpoint_special
TO login_name;

特定の IPv6 アドレスおよびポートを参照する新しいエンドポイントを作成する

CREATE ENDPOINT ipv6_endpoint_special STATE = STARTED AS TCP (
    LISTENER_PORT = 55555,
    LISTENER_IP = ('::1')
)
FOR TSQL();

GRANT CONNECT ON ENDPOINT::[TSQL Default TCP] TO PUBLIC;
GRANT CONNECT ON ENDPOINT::ipv6_endpoint_special TO PUBLIC;

関連項目

ALTER ENDPOINT (Transact-SQL)
暗号化アルゴリズムの選択
DROP ENDPOINT (Transact-SQL)
EVENTDATA (Transact-SQL)