建立 Windows 驗證的資料庫鏡像端點 (Transact-SQL)

適用於:SQL Server

本主題描述如何使用 Transact-SQL,在 SQL Server 中建立使用 Windows 驗證的資料庫鏡像端點。 若要支援資料庫鏡像或 Always On 可用性群組,每個 SQL Server 執行個體都需要資料庫鏡像端點。 伺服器執行個體只可有一個資料庫鏡像端點,而這個端點具有單一通訊埠。 建立資料庫鏡像端點後,該資料庫鏡像端點即可使用本機系統上的任何可用通訊埠。 伺服器執行個體上的所有資料庫鏡像工作階段都會接聽該通訊埠,且資料庫鏡像的所有內送連接也都會使用該通訊埠。

重要

若資料庫鏡像端點存在且已在使用中,我們建議您使用該端點。 卸除使用中端點會中斷現有工作階段。

本主題內容

開始之前

安全性

伺服器執行個體的驗證及加密方法是由系統管理員所建立。

警告

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

權限

需要 CREATE ENDPOINT 權限或系統管理員 sysadmin 固定伺服器角色中的成員資格。 如需詳細資訊,請參閱 GRANT 端點權限 (Transact-SQL)

使用 TRANSACT-SQL

建立使用 Windows 驗證的資料庫鏡像端點

  1. 連結至您要建立資料庫鏡像端點的 SQL Server 執行個體。

  2. 在標準列中,按一下 [新增查詢]

  3. 使用下列陳述式決定資料庫鏡像端點是否已經存在。

    SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints;   
    

    重要

    如果伺服器執行個體已經有資料庫鏡像端點,則在您於伺服器執行個體上建立的其他任何工作階段,都會使用該端點。

  4. 若要以 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;指定任何其他通訊協定將造成錯誤。

      每個電腦系統僅能使用某個通訊埠編號一次。 建立資料庫鏡像端點後,該資料庫鏡像端點即可使用本機系統上的任何可用通訊埠。 若要識別系統上 TCP 端點目前使用的通訊埠,請使用下列 Transact-SQL 陳述式:

      SELECT name, port FROM sys.tcp_endpoints;  
      

      重要

      每個伺服器執行個體都需要一個且唯一的接聽程式通訊埠。

    • 若為 Windows 驗證,除非您想要端點只使用 NTLM 或 Kerberos 來驗證連接,否則 AUTHENTICATION 是選擇性選項。 <authorizationMethod> 將用來驗證連線的方法指定為下列其中一項:NTLM、KERBEROS 或 NEGOTIATE。 預設值 NEGOTIATE,將導致端點使用 Windows 交涉通訊協定來選擇 NTLM 或 Kerberos。 視相對端點的驗證層級而定,交涉可讓連接需要或不需要驗證。

      注意

      若要針對可用性群組 (AG) 端點之間的通訊使用 Kerberos 驗證,請為 AG 所使用的資料庫鏡像端點註冊 Kerberos 連線的服務主體名稱

    • 依預設,ENCRYPTION 是設定為 REQUIRED。 這表示此端點的所有連接都必須使用加密。 不過,您可以停用加密或使其在端點上為選擇性的。 替代方案如下所示:

      定義
      DISABLED 指定透過連接傳送的資料不加密。
      SUPPORTED 指定只有在相對端點指定為 SUPPORTED 或 REQUIRED 時才加密資料。
      REQUIRED 指定透過連接所傳送的資料必須加密。

      如果端點需要加密,其他的端點必須將 ENCRYPTION 設定為 SUPPORTED 或 REQUIRED。

    • <algorithm> 提供用於指定端點加密標準的選項。 <algorithm> 的值可為下列任一演算法或演算法組合:RC4、AES、AES RC4 或 RC4 AES。

      資料庫鏡像端點的 AES 演算法會使用 128 位元金鑰長度。

      AES RC4 指定此端點將交涉加密演算法,將優先權指定給 AES 演算法。 RC4 AES 指定此端點將交涉加密演算法,將優先權指定給 RC4 演算法。 如果這兩個端點都指定了這兩種演算法 (但指定順序不同),則以接受連接的端點為準。 明確提供相同的演算法,以避免不同伺服器之間發生連線錯誤。

      警告

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

    • <role> 定義伺服器可以執行的一個或多個角色。 指定所需的 ROLE。 然而,端點的角色只與資料庫鏡像有關。 對於 Always On 可用性群組,會忽略端點的角色。

      若要允許伺服器執行個體做為一個資料庫鏡像工作階段的一個角色,並做為另一個工作階段的其他角色,請指定 ROLE=ALL。 若要限制伺服器執行個體作為夥伴或見證伺服器,請分別指定 ROLE = PARTNERROLE = WITNESS

      注意

      如需適用不同版本 SQL Server 之資料庫鏡像選項的詳細資訊,請參閱 SQL Server 2016 版本支援的功能

    如需 CREATE ENDPOINT 語法的完整說明,請參閱 CREATE ENDPOINT (Transact-SQL)

    注意

    若要變更現有的端點,請使用 ALTER ENDPOINT (Transact-SQL)

範例:建立端點以支援資料庫鏡像 (Transact-SQL)

下列範例會在三部不同的電腦系統上建立預設伺服器執行個體的資料庫鏡像端點:

伺服器執行個體的角色 主機電腦的名稱
夥伴 (一開始為主體角色) SQLHOST01\.
夥伴 (一開始為鏡像角色) SQLHOST02\.
見證 SQLHOST03\.

在此範例中,雖然任何可用的通訊埠編號都可以使用,不過三個終止點都會使用通訊埠編號 7022。 AUTHENTICATION 選項是不必要的,因為終止點會使用預設類型「Windows 驗證」。 ENCRYPTION 選項也沒有必要,因為終止點隨時會交涉連線的驗證方法,這是「Windows 驗證」的預設行為。 另外,所有終止點都需要加密,這也是預設行為。

每個伺服器執行個體都限制為擔任夥伴或見證,每個伺服器的終止點都會明確地指定其角色 (ROLE=PARTNER 或 ROLE=WITNESS)。

重要

每個伺服器執行個體都僅能有一個終止點。 因此,如果您要伺服器執行個體成為某些工作階段中的夥伴,而其他的為見證,請指定 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  

相關工作

若要設定資料庫鏡像端點

若要檢視有關資料庫鏡像端點的資訊

另請參閱

ALTER ENDPOINT (Transact-SQL)
選擇加密演算法
CREATE ENDPOINT (Transact-SQL)
指定伺服器網路位址 (資料庫鏡像)
範例:使用 Windows 驗證設定資料庫鏡像 (Transact-SQL)
資料庫鏡像端點 (SQL Server)