次の方法で共有


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 TSQL_language_specific_arguments> ::=
FOR TSQL (
   [ ENCRYPTION = { NEGOTIATED | STRICT } ]
)

<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 ログイン

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

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

ALTER ENDPOINT では、AUTHORIZATION オプションを使用できません。 エンドポイントの作成時にのみ所有者を割り当てることができます。

所有権を再割当するには、DROP ENDPOINT (Transact-SQL) に関するページを参照し、この記事に戻ってエンドポイントを再作成してください。

STATE = { STARTED |STOPPED |DISABLED }

作成時のエンドポイントの状態。 エンドポイントの作成時に状態が指定されていない場合は、STOPPED が既定です。

STARTED

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

DISABLED

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

停止

エンドポイントは停止しています。 この状態では、サーバーはエンドポイント ポートをリッスンしたり、エンドポイントの使用を試みた要求に応答したりしません。

状態を変更するには、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 アドレスでの接続が許可されます。

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

T-SQL オプション

ENCRYPTION = { ネゴシエート済み |STRICT }

適用対象: SQL Server 2022 (16.x) 以降

プロセスでの暗号化の使用方法を指定します。 互換性上の理由から、既定値は NEGOTIATED です。

交渉

接続の暗号化方法は、サーバーとクライアントの間でネゴシエートされます。 確立された実際の接続は、次の暗号化を行うことができます。

  • LOGIN7 メッセージのみ。
  • PRELOGIN を除くすべてのメッセージ。
  • すべてのメッセージ。

厳しい

このエンドポイントに送信されるすべてのメッセージを暗号化する必要があり、フォールバック証明書がエンドポイントによって提示されないように指定します。 TLS ヘッダーが最初のメッセージでない場合、サーバーは接続を切断します。

SERVICE_BROKERとDATABASE_MIRRORINGのオプション

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

注意

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

AUTHENTICATION = <authentication_options>

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

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

重要

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

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 |サポート対象 |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) 以降の既定値です。

注意

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

AES RC4

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

RC4 AES

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

注意

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 |パートナー |ALL }

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

WITNESS

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

注意

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

PARTNER

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

ALL

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

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

注意

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;

厳密な暗号化を使用して新しいエンドポイントを作成する

CREATE ENDPOINT [TDSSConnection]   
STATE = STARTED   
AS TCP   
   (LISTENER_PORT = 1433, LISTENER_IP = ALL)   
FOR TSQL 
    (ENCRYPTION = STRICT ) ;   
GO