数据库镜像终结点 (SQL Server)

适用于:SQL Server - 仅限 Windows Azure SQL 托管实例

若要参与 Always On 可用性组 或数据库镜像,服务器实例需要有自己专用的“数据库镜像端点” 。 此端点用途特殊,专门用于接收来自其他服务器实例的这些连接。 在某一给定服务器实例上,与任何其他服务器实例的每个 Always On 可用性组 或数据库镜像连接都使用单个数据库镜像端点。

数据库镜像端点使用传输控制协议 (TCP) 在参与数据库镜像会话或承载可用性副本的服务器实例之间发送和接收消息。 数据库镜像端点在唯一的 TCP 端口号上进行侦听。

与主体服务器或主副本的客户端连接不使用数据库镜像终结点。

注意

后续版本的 Microsoft SQL Server 将删除数据库镜像功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用数据库镜像的应用程序,以便改用 Always On 可用性组 。

服务器网络地址

服务器实例的网络地址(其“服务器网络地址”或“终结点 URL”)包含其端点的端口号,以及主机的系统名称和域名。 端口号唯一标识特定的服务器实例。

下图具体说明了如何将同一服务器上的两个服务器实例进行唯一标识。 两个服务器实例的服务器网络地址均包含相同的系统名称 MYSYSTEM和域名 Adventure-Works.MyDomain.com。 若要使系统能够路由到服务器实例的连接,服务器网络地址需要包括与特定服务器实例的镜像端点相关联的端口号。

默认实例的服务器网络地址示意图。

默认情况下,SQL Server 的实例不包含数据库镜像终结点。 在建立数据库镜像会话时,必须手动创建它们。 系统管理员必须在将要参与数据库镜像的每个服务器实例中分别创建端点。 如果给定计算机上的多个服务器实例需要数据库镜像终结点,请为每个终结点指定不同的端口号。

重要

如果运行 SQL Server 的计算机具有防火墙,则防火墙配置必须允许端点中指定的端口的传入和发送连接。

对于数据库镜像和 Always On 可用性组,身份验证和加密在端点配置。 有关详细信息,请参阅 传输安全性 - 数据库镜像 - AlwaysOn 可用性

重要

不要重新配置正在使用的数据库镜像终结点。 服务器实例使用彼此的端点来了解其他系统的状态。 如果重新配置端点,则可能会重新启动此端点,从而导致其他服务器实例出现错误。 这对于自动故障转移模式尤为重要,在此模式下,在伙伴上重新配置端点可能会导致故障转移。

确定数据库镜像终结点的身份验证类型

请务必了解服务器实例的 SQL Server 服务帐户确定可用于数据库镜像终结点的身份验证类型,如下所示:

  • 如果每个服务器实例都在某一域服务帐户下运行,则您可以将 Windows 身份验证用于您的数据库镜像端点。 如果所有服务器实例都以同一域用户帐户运行,则两个 master 数据库中都自动存在正确的用户登录名。 这样可简化可用性数据库的安全配置并建议这样做。

    如果托管可用性组可用性副本的任何服务器实例都以不同的帐户身份运行,则必须在其他服务器实例上创建 master 每个帐户的登录名。 然后,必须向该登录名 CONNECT 授予连接到该服务器实例的数据库镜像终结点的权限。 有关详细信息, 请设置登录帐户 - 数据库镜像 AlwaysOn 可用性

    如果您的服务器实例使用 Windows 身份验证,则您可以通过使用 Transact-SQL、PowerShell 或新建可用性组向导创建数据库镜像端点。

    注意

    如果要承载可用性副本的服务器实例缺少数据库镜像端点,则新建可用性组向导可以自动创建使用 Windows 身份验证的数据库镜像端点。 有关详细信息,请参阅 使用可用性组向导 (SQL Server Management Studio)

  • 如果任何服务器实例正在以内置帐户(例如 Local System、Local Service 或 Network Service)或非域帐户运行,则您必须使用证书来进行端点身份验证。 如果对数据库镜像终结点使用证书,系统管理员必须将每个服务器实例配置为在出站和入站连接上使用证书。

    没有使用证书配置数据库镜像安全性的自动化方法。 需要使用 CREATE ENDPOINT Transact-SQL 语句或 New-SqlHadrEndpoint PowerShell cmdlet。 有关详细信息,请参阅 CREATE ENDPOINT。 有关在服务器实例上启用证书身份验证的信息,请参阅 使用数据库镜像终结点的证书

配置数据库镜像终结点

查看有关数据库镜像终结点的信息

sys.database_mirroring_endpoints(Transact-SQL)