適用於:SQL Server
建立端點及定義其屬性,包括用戶端應用程式可用的方法。 相關權限資訊請參見 GRANT 端點權限。
的 CREATE ENDPOINT 語法可邏輯分為兩部分:
第一部分以 AS 開頭,並在子
FOR句之前結束。在這個部分,您需要提供傳輸通訊協定 (TCP) 的詳細資訊,並設定端點的接聽通接埠編號,以及端點驗證的方法及/或您要限制其存取端點的 IP 位址 (若有) 清單。
第二部分從條款
FOR開始。在這個部分,您定義端點上支援的裝載。 裝載可以是下列數個支援類型之一:Transact-SQL、Service Broker 及資料庫鏡像。 在這個部分,您還會併入特定語言資訊。
語法
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 | ( four_part_ipv4_address ) | ( 'ip_address_v6' ) ]
)
<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 」,然後返回本文重新建立該終端。
狀態 = { 已開始 |已停止 |已停用 }
建立端點時的狀態。 如果建立端點時未指定狀態,則 STOPPED 預設為該狀態。
STARTED
端點已啟動,並主動接聽連接。
DISABLED
端點已停用。 在這種狀態下,伺服器會接聽通訊埠要求,但會將錯誤傳回用戶端。
已停止
端點已停止。 在此狀態下,伺服器不會接聽端點埠,也不會回應任何嘗試使用端點的要求。
要更改狀態,請使用 ALTER ENDPOINT。
作為 { 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 = 全部 |(four_part_ipv4_address) |(「ip_address_v6」)
指定端點將接聽的 IP 位址。 預設值是 ALL。 這表示接聽程式會接受與任何有效 IP 位址的連接。
如果您使用 IP 位址而非完整網域名稱 (ALTER DATABASE SET PARTNER = partner_IP_address 或 ALTER 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論點與選項中常見DATABASE_MIRRORINGSERVICE_BROKER。ENCRYPTION
注意
關於特定於 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
指定只有當對端點指定SUPPORTEDREQUIRED為或時,資料才被加密。
REQUIRED
指定這個端點的連接必須使用加密。 因此,要連接此端點,必須有另一端點設ENCRYPTION為SUPPORTEDREQUIRED或。
你可以選擇性地使用參數 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 端點權限。
Examples
建立資料庫鏡像端點
下列範例建立資料庫鏡像端點。 該端點使用的是通訊埠編號 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 = 32766,
LISTENER_IP = (10.0.75.1)
)
FOR TSQL ();
-- Keep existing public permission on default endpoint for demo purpose
GRANT CONNECT ON ENDPOINT::[TSQL Default TCP] TO public;
GRANT CONNECT ON ENDPOINT::ipv4_endpoint_special TO login_name;
建立指向特定 IPv6 位址和連接埠的新端點
CREATE ENDPOINT ipv6_endpoint_special STATE = STARTED AS TCP (
LISTENER_PORT = 32766,
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