如何创建使用 Windows 身份验证的镜像端点 (Transact-SQL)
每个数据库镜像服务器实例都需要分配给其数据库镜像端点的唯一侦听器端口。一个服务器实例只能有一个数据库镜像端点,该端点有一个端口。在创建端点时,数据库镜像端点可以使用本地系统上任何可用的端口。服务器实例上的所有数据库镜像会话都侦听该端口,并且数据库镜像的所有传入连接都使用该端口。
创建端点时,系统管理员指定服务器实例的身份验证和加密方法。
重要提示: |
---|
如果数据库镜像端点已存在并处于使用状态,则我们建议您将此端点用于服务器实例中的每一个会话。删除正在使用的端点会中断现有会话的连接。如果已经为会话设置了见证服务器,则删除数据库镜像端点会造成该会话的主体服务器失去仲裁;如果发生这种情况,数据库会进入离线状态,其用户也会断开连接。有关详细信息,请参阅仲裁:见证服务器如何影响数据库可用性。 |
创建使用 Windows 身份验证的镜像端点
连接至要为其创建数据库镜像端点的服务器实例。
使用以下语句确定数据库镜像端点是否已经存在:
SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints
重要提示: 如果服务器实例已有数据库镜像端点,则可以将该端点用于在服务器实例上建立的任何其他会话。 若要使用 Transact-SQL 创建使用 Windows 身份验证的端点,请使用 CREATE ENDPOINT 语句。该语句采用以下常规形式:
CREATE ENDPOINT <端点名称>
STATE=STARTED
AS TCP ( LISTENER_PORT = <侦听器端口列表> )
FOR DATABASE_MIRRORING
(
[ AUTHENTICATION = WINDOWS [ <授权方法> ]
]
[ [,] ENCRYPTION = REQUIRED
[ ALGORITHM { <算法> } ]
]
[,] ROLE = <角色>
)
其中
<端点名称> 是服务器实例的数据库镜像端点的唯一名称。
STARTED 指定端点启动并开始侦听连接。数据库镜像端点创建后通常处于 STARTED 状态。另外,可以启动处于 STOPPED 状态(默认值)或 DISABLED 状态中的会话。
<listenerPortList> 是需要服务器在其上侦听数据库镜像消息的单一端口号 (nnnn)。只允许使用 TCP,指定任何其他协议都会导致发生错误。
每个计算机系统一次只能使用一个端口号。在创建端点时,数据库镜像端点可以使用本地系统上任何可用的端口。若要识别出系统上 TCP 端点当前使用的端口,请使用以下 Transact-SQL 语句:SELECT name, port FROM sys.tcp_endpoints
重要提示: 每个服务器实例需要且只需要一个唯一的侦听器端口。 对于 Windows 身份验证,AUTHENTICATION 选项是可选的,除非您只想让端点使用 NTLM 或 Kerberos 对连接进行身份验证。<授权方法> 指定用于对连接进行身份验证的以下方法之一:NTLM、KERBEROS 或 NEGOTIATE。默认方法 NEGOTIATE 会导致端点使用 Windows 协商协议来选择 NTLM 或 Kerberos。根据另一侧端点的身份验证级别的不同,协商协议启用具有或没有身份验证的连接。有关这些方法的信息,请参阅端点身份验证类型。
默认情况下,ENCRYPTION 设置为 REQUIRED。这意味着此端点的所有连接都必须加密。但您可以禁用加密,或对于端点可以选择禁用加密。可以选择的选项如下:
值 定义 DISABLED
指定不对通过连接发送的数据加密。
SUPPORTED
指定只有在对方端点指定了 SUPPORTED 或者 REQUIRED 时,才加密数据。
REQUIRED
指定必须对通过连接发送的数据加密。
如果端点要求加密,则对于其他端点,必须将 ENCRYPTION 设置为 SUPPORTED 或 REQUIRED。
<算法> 用来为端点指定加密标准。<算法> 的值可以是以下某个算法或这些算法的组合:RC4、AES、AES RC4 或 RC4 AES。
AES RC4 指定此端点协商加密算法,但优先使用 AES 算法。RC4 AES 指定此端点协商加密算法,但优先使用 RC4 算法。如果两个端点都指定了这两种算法,但顺序不同,则接受连接的端点入选。注意: 尽管 RC4 远远快于 AES,但它是一个相对较弱的算法,而 AES 是一个相对较强的算法。因此,建议使用 AES 算法。 <角色> 定义服务器可以执行的角色。必须指定 ROLE。
若要让服务器实例对于一个数据库镜像会话执行一个角色,对于另一个会话执行另一个角色,请指定 ROLE = ALL。若要让服务器实例限于执行伙伴角色或见证角色,请分别指定 ROLE = PARTNER 或 ROLE = WITNESS。注意: 对于 SQL Server Express Edition,只能选择 WITNESS。
有关 CREATE ENDPOINT 语法的完整说明,请参阅 CREATE ENDPOINT (Transact-SQL)。
注意: 若要更改现有的端点,请使用 ALTER ENDPOINT (Transact-SQL)。
示例
下面的示例为三个不同的计算机系统上的默认服务器实例创建端点:
服务器实例的角色 | 主机的名称 |
---|---|
伙伴(最初在主体角色中) |
|
伙伴(最初在镜像角色中) |
|
见证服务器 |
|
在本示例中,尽管任何可用的端口号都可以,但所有三个端点都使用端口号 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
有关显示安全设置、准备镜像数据库、设置伙伴和添加见证服务器的完整示例,请参阅设置数据库镜像。
请参阅
任务
如何允许使用 Windows 身份验证进行数据库镜像网络访问 (Transact-SQL)
概念
指定服务器网络地址(数据库镜像)
示例:使用 Windows 身份验证设置数据库镜像 (Transact-SQL)
数据库镜像端点
其他资源
ALTER ENDPOINT (Transact-SQL)
选择加密算法
CREATE ENDPOINT (Transact-SQL)