AlwaysOn 可用性组配置疑难解答 (SQL Server)

本主题提供有关帮助解决为 AlwaysOn 可用性组配置服务器实例的典型问题的信息。 典型的配置问题包括 AlwaysOn 可用性组已禁用、帐户配置不正确、数据库镜像终结点不存在、终结点不可访问(SQL Server 错误 1418)、网络访问不存在,联接数据库命令失败(SQL Server 错误 35250)。

注释

确保满足 AlwaysOn 可用性组先决条件。 有关详细信息,请参阅 AlwaysOn 可用性组的先决条件、限制和建议(SQL Server)。

本主题内容:

部分 DESCRIPTION
未启用 AlwaysOn 可用性组 如果未为 AlwaysOn 可用性组启用 SQL Server 实例,该实例不支持创建可用性组,并且无法托管任何可用性副本。
帐户 介绍了正确配置运行 SQL Server 所用的帐户的相关要求。
端点 介绍如何诊断与服务器实例的数据库镜像端点有关的问题。
系统名称 汇总了在终结点 URL 中指定服务器实例的系统名称的替代方法。
网络访问 记录了承载可用性副本的每个服务器实例必须能够通过 TCP 访问其他各个服务器实例的端口的要求。
端点访问(SQL Server 错误 1418) 包含有关此 SQL Server 错误消息的信息。
联接数据库失败(SQL Server 错误 35250) 讨论无法将辅助数据库加入可用性组的可能原因和解决方法,因为与主副本的连接不处于活动状态。
只读路由未正确工作
相关任务 包含 SQL Server 2014 联机丛书中面向任务的主题的列表,这些主题与可用性组配置故障排除特别相关。
相关内容 包含 SQL Server 联机丛书以外的相关资源的列表。

尚未启用 AlwaysOn 可用性组

必须在 SQL Server 2014 的每个实例上启用 AlwaysOn 可用性组功能。 有关详细信息,请参阅“启用和禁用 AlwaysOn 可用性组”(SQL Server)。

帐户

必须正确配置运行 SQL Server 所用的帐户。

  1. 帐户是否具有正确的权限?

    1. 如果合作伙伴以相同的域用户帐户运行,则两个 master 数据库中自动存在正确的用户登录名。 这简化了数据库的安全配置,建议这样做。

    2. 如果两个服务器实例以不同的帐户运行,则必须在远程服务器实例的 master 中创建每个帐户的登录名,并且必须授予 CONNECT 权限才能连接到该服务器实例的数据库镜像终结点。 有关详细信息,请参阅为数据库镜像或 AlwaysOn 可用性组(SQL Server)设置登录帐户

  2. 如果 SQL Server 作为内置帐户(例如本地系统、本地服务或网络服务)或非域帐户运行,则必须使用证书进行终结点身份验证。 如果您的服务帐户使用的是同一个域中的域帐户,则您可以选择为所有副本位置上的每个服务帐户授予 CONNECT 访问权限,或者您可以使用证书。 有关详细信息,请参阅使用数据库镜像终结点的证书(Transact-SQL)。

端点

必须正确配置端点。

  1. 确保要托管可用性副本(每个副本位置)的各个 SQL Server 实例都具有数据库镜像终结点。 若要确定给定服务器实例上是否存在数据库镜像终结点,请使用 sys.database_mirroring_endpoints 目录视图。 有关详细信息,请参阅创建用于 Windows 身份验证的数据库镜像终结点(Transact-SQL)允许数据库镜像终结点使用证书进行出站连接(Transact-SQL)。

  2. 检查端口号是否正确。

    若要标识当前与服务器实例的数据库镜像端点关联的端口,请使用以下 Transact-SQL 语句:

    SELECT type_desc, port FROM sys.tcp_endpoints;
    GO
    
  3. 对于难以解释的 AlwaysOn 可用性组设置问题,建议检查每个服务器实例,以确定它是否侦听正确的端口。 有关验证端口可用性的信息,请参阅 MSSQLSERVER_1418

  4. 确保已启动端点 (STATE = STARTED)。 对于各个服务器实例,使用以下 Transact-SQL 语句:

    SELECT state_desc FROM sys.database_mirroring_endpoints
    

    有关 state_desc 列的详细信息,请参阅 sys.database_mirroring_endpoints (Transact-SQL)

    若要启动端点,请使用以下 Transact-SQL 语句:

    ALTER ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS TCP (LISTENER_PORT = <port_number>)
    FOR database_mirroring (ROLE = ALL);
    GO
    

    有关详细信息,请参阅 ALTER ENDPOINT (Transact-SQL)

  5. 确保其他服务器的登录帐户具有 CONNECT 权限。 若要确定哪个登录帐户拥有对端点的 CONNECT 权限,请对每个服务器实例使用以下 Transact-SQL 语句:

    SELECT 'Metadata Check';
    SELECT EP.name, SP.STATE, 
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id)) 
          AS GRANTOR, 
       SP.TYPE AS PERMISSION,
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id)) 
          AS GRANTEE 
       FROM sys.server_permissions SP , sys.endpoints EP
       WHERE SP.major_id = EP.endpoint_id
       ORDER BY Permission,grantor, grantee; 
    GO
    
    

系统名称

对于终结点 URL 中的服务器实例的系统名称,可以使用任何明确标识系统的名称。 服务器地址可以是系统名称(如果系统位于同一域中)、完全限定的域名或 IP 地址(最好是静态 IP 地址)。 使用完全限定的域名可以确保正常工作。 有关详细信息,请参阅在添加或修改可用性副本时指定终结点 URL (SQL Server)

网络访问

要承载可用性副本的每个服务器实例必须能够通过 TCP 访问其他各个服务器实例的端口。 如果服务器实例位于不相互信任(不受信任的域)的不同域中,这一点尤其重要。

端点访问(SQL Server 错误 1418)

此 SQL Server 消息指示无法访问或不存在终结点 URL 中指定的服务器网络地址,并建议验证网络地址名称并重新发出命令。 有关详细信息,请参阅 MSSQLSERVER_1418

联接数据库失败(SQL Server 错误 35250)

本部分讨论无法将辅助数据库加入可用性组的可能原因和解决方法,因为与主副本的连接不处于活动状态。

解决方法:

  1. 检查防火墙设置,查看是否允许托管主副本的服务器实例和辅助副本(默认情况下端口 5022)之间的终结点端口通信。

  2. 检查网络服务帐户是否具有与终结点的连接权限。

只读路由未正确工作

验证以下配置值设置,并在必要时更正它们。

关于... 行动 注释 链接
复选框 当前主副本 确保可用性组侦听器处于联机状态。 验证侦听器是否处于联机状态:

SELECT * FROM sys.dm_tcp_listener_states;

重启脱机侦听器:

ALTER AVAILABILITY GROUP myAG RESTART LISTENER 'myAG_Listener';
sys.dm_tcp_listener_states(Transact-SQL)

更改可用性组 (Transact-SQL)
复选框 当前主要副本 确保READ_ONLY_ROUTING_LIST仅包含托管可读辅助副本的服务器实例。 若要标识可读次要副本: sys.availability_replicas(secondary_role_allow_connections_desc 列)

若要查看只读路由列表: sys.availability_read_only_routing_lists

要更改只读路由列表: ALTER AVAILABILITY GROUP
sys.availability_replicas(Transact-SQL)

sys.availability_read_only_routing_lists(Transact-SQL)

更改可用性组 (Transact-SQL)
复选框 只读路由列表中的每个副本 请确保 Windows 防火墙未在阻止 READ_ONLY_ROUTING_URL 端口。 - 为数据库引擎访问配置 Windows 防火墙
复选框 read_only_routing_list中的每个副本 在 SQL Server Configuration Manager 中,验证是否:

已启用 SQL Server 远程连接。

已启用 TCP/IP。

IP 地址已正确配置。
- 查看或更改服务器属性 (SQL Server)

将服务器配置为侦听特定 TCP 端口(SQL Server 配置管理器)
复选框 “read_only_routing_list”中的每个副本 确保READ_ONLY_ROUTING_URL(TCP://system-addressport)包含正确的完全限定域名(FQDN)和端口号。 - 计算 AlwaysOn 的read_only_routing_url

sys.availability_replicas(Transact-SQL)

更改可用性组 (Transact-SQL)
复选框 客户端系统 验证客户端驱动程序是否支持只读路由。 - AlwaysOn 客户端连接 (SQL Server)

相关任务

相关内容

另请参阅

数据库镜像和 AlwaysOn 可用性组的传输安全性(SQL Server)客户端网络配置AlwaysOn 可用性组(SQL Server)的先决条件、限制和建议