共用方式為


建立端點 (Transact-SQL)

適用於:SQL Server

建立端點及定義其屬性,包括用戶端應用程式可用的方法。 如需相關的權限資訊,請參閱 GRANT 端點權限 (Transact-SQL)

在邏輯上,CREATE ENDPOINT 的語法可分為兩個部分:

  • 第一部分從 AS 開始,並在 FOR 子句之前結束。

    在這個部分,您需要提供傳輸通訊協定 (TCP) 的詳細資訊,並設定端點的接聽通接埠編號,以及端點驗證的方法及/或您要限制其存取端點的 IP 位址 (若有) 清單。

  • 第二個部分從 FOR 子句開始。

    在這個部分,您定義端點上支援的裝載。 裝載可以是下列數個支援類型之一:Transact-SQL、Service Broker 及資料庫鏡像。 在這個部分,您還會併入特定語言資訊。

注意

SQL Server 2012 (11.x) 已移除原生 XML Web Service (SOAP/HTTP 端點)。

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 權限。

AUTHORIZATION 選項在 ALTER ENDPOINT 中無法使用。 只有在建立端點時,才可指派擁有權。

若要重新指派擁有權,請參閱 DROP ENDPOINT (Transact-SQL), 然後返回本文以重新建立端點。

狀態 = { 已開始 |已停止 |已停用 }

建立端點時的狀態。 如果在建立端點時未指定狀態,則預設值為 STOPPED。

STARTED

端點已啟動,並主動接聽連接。

DISABLED

端點已停用。 在這種狀態下,伺服器會接聽通訊埠要求,但會將錯誤傳回用戶端。

已停止

端點已停止。 在此狀態下,伺服器不會接聽端點埠,也不會回應任何嘗試使用端點的要求。

若要變更狀態,請使用 ALTER ENDPOINT (Transact-SQL)

作為 { TCP }

指定要使用的傳輸通訊協定。

對於 { TSQL |SERVICE_BROKER |DATABASE_MIRRORING }

指定裝載類型。

目前沒有任何 Transact-SQL 語言特定引數要傳入 <language_specific_arguments> 參數。

TCP 通訊協定選項

下列引數只適用於 TCP 通訊協定選項。

LISTENER_PORT = listenerPort

指定 Service Broker TCP/IP 通訊協定用來接聽連接時所用的通訊埠編號。 依慣例會使用 5022,但介於 1024 和 32767 之間的任何數字都有效。

LISTENER_IP = 全部 |(4 部分 IP) |( “ip_address_v6” )

指定端點將接聽的 IP 位址。 預設值是 ALL。 這表示接聽程式會接受與任何有效 IP 位址的連接。

如果您使用 IP 位址而非完整網域名稱 (ALTER DATABASE SET PARTNER = partner_IP_addressALTER DATABASE SET WITNESS = witness_IP_address) 來設定資料庫鏡像,則必須在建立鏡像端點時指定 LISTENER_IP =IP_address INSTEAD LISTENER_IP=ALL

T-SQL 選項

加密 = { 協商 |嚴格 }

適用於: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_options>

指定此端點連接的 TCP/IP 驗證需求。 預設值是 WINDOWS

支援的驗證方法包括 NTLM 及 (或) Kerberos。

重要

伺服器執行個體中的所有鏡像連接全都使用單一資料庫鏡像端點。 建立其他資料庫鏡像端點的任何嘗試都會失敗。

WINDOWS [ { NTLM |KERBEROS |協商 } ]

指定端點要利用 Windows 驗證通訊協定連接來驗證端點。 這是預設值。

如果您指定授權方法 (NTLM 或 KERBEROS),一律以該方法做為驗證通訊協定。 預設值 NEGOTIATE 會導致端點利用 Windows 交涉通訊協定來選擇 NTLM 或 Kerberos。

證書 certificate_name

指定端點必須利用 certificate_name 所指定的憑證驗證連接,來建立授權的身分識別。 遠端點必須有一個特定憑證,該憑證含有符合指定憑證之私密金鑰的公開金鑰。

WINDOWS [ { NTLM |KERBEROS |協商 } ] 證書 certificate_name

指定端點必須嘗試利用 Windows 驗證連接,而且,如果該嘗試失敗,則嘗試使用指定的憑證。

WINDOWS certificate_name 證書 [ { NTLM |KERBEROS |協商 } ]

指定端點必須嘗試利用指定的憑證連接,而且,如果該嘗試失敗,則嘗試使用 Windows 驗證。

加密 = { 已停用 |支援 |必填 } [ 演算法 { 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

指定這兩個端點必須與這個偏好 AES 演算法的端點針對加密演算法進行交涉。

RC4 AES

指定這兩個端點必須與這個偏好 RC4 演算法的端點針對加密演算法進行交涉。

注意

RC4 演算法已被取代。 SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 我們建議您改用 AES。

如果這兩個端點都指定了這兩種演算法 (但指定順序不同),則以接受連接的端點為準。

SERVICE_BROKER選項

以下是 SERVICE_BROKER 選項特定的引數。

MESSAGE_FORWARDING = { 已啟用 |已停用 }

判斷是否要轉送這個端點接收的訊息 (適用於位在其他位置的服務)。

ENABLED

如果轉寄地址可用,則轉寄訊息。

DISABLED

捨棄適用於其他位置的服務之訊息。 這是預設值。

MESSAGE_FORWARD_SIZE = forward_size

指定當儲存即將要轉送的訊息時,配置給端點使用的最大儲存體數量 (以 MB 為單位)。

DATABASE_MIRRORING選項

以下是 DATABASE_MIRRORING 選項特定的引數。

角色 = { 見證人 |合作夥伴 |全部 }

指定端點支援的資料庫鏡像一或多個角色。

WITNESS

使端點在鏡像處理序中能夠以見證角色來執行。

注意

對於 SQL Server 2005 Express 版本而言,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