zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

SQLServer 错误 35250 到主要副本的连接处于非活动状态。 无法处理该命令。 故障 处理 修复 支持远程

SQLServer错误连接命令 故障 处理 远程 修复
2023-06-13 09:19:26 时间
SQLServer 错误 35250 到主要副本的连接处于非活动状态。 无法处理该命令。 故障 处理 修复 支持远程

尝试将辅助数据库联接到 Always On 可用性组时,会出现此消息。 如果无法连接到终结点,则通常会导致此错误。

选项 1:通过 Azure Data Studio 直接在笔记本中执行这些步骤

在 Azure Data Studio 中打开笔记本

了解如何安装 Azure Data Studio

选项 2:手动执行步骤**

备注

必须在主要副本和有问题的次要副本上都运行下列所有步骤。

1. 请确保终结点已创建且已启动。
sys.tcp_endpoints tep INNER JOIN sys.server_principals sp ON tep.principal_id = sp.principal_id WHERE tep.type = 4

警告

执行下一命令时请小心,因为它可能导致副本暂时出现故障。


可使用这些命令来重启你发现的终结点

ALTER ENDPOINT hadr_endpoint STATE = STOPPED

ALTER ENDPOINT hadr_endpoint STATE = STARTED


使用 telnet 或 Test-NetConnection 验证连接性 。 如果终结点正在侦听且连接成功,则 telnet 将显示一个包含闪烁游标的空白屏幕。 否则,你将收到来自 Telnet 的连接错误。 要退出成功的 Telnet 连接,请按 CTRL+]。 如果使用 Test-NetConnection,请查找 TcpTestSucceeded : True 或 TcpTestSucceeded : False。

telnet ServerName port_number 

telnet IP_Address port_number 

Test-NetConnection -ComputerName ServerName -Port port_number 

Test-NetConnection -ComputerName IP_address -Port port_number 


如果 telnet/Test-NetConnection 到 IP 地址的连接成功,但到 ServerName 的连接失败,则可能是 DNS 或名称解析问题 。 请参阅检查名称解析问题

多个进程侦听同一端口


如果 telnet/Test-NetConnection 连接使用 ServerName 时正常运行,但使用 IP 地址时失败,则在该服务器(可能是另一 SQL 实例)上可能定义了多个终结点,它们均配置为侦听该端口 。 虽然存在问题的实例上终结点的状态显示“已启动”,但另一实例实际上可能具有端口绑定,并阻止正确的实例侦听和建立 TCP 连接。 例如,若要查找端口 5022 的拥有进程,请运行以下命令:

$port = 5022 

Get-Process -Id (Get-NetTCPConnection -LocalPort $port).OwningProcess |Select-Object Name, ProductVersion, Path, Id


如果 Telnet 或 Test-NetConnection 连接失败,请查找可能阻止相关终结点端口的防火墙和/或防病毒软件 。 检查防火墙设置,查看是否允许在承载主副本的服务器实例与辅助副本之间进行终结点端口通信(默认情况下为端口 5022)。 如果正在 Azure VM 上运行 SQL Server,则还需要确保网络安全组 (NSG) 允许流量流向终结点端口。 检查防火墙设置(对于 Azure VM,请查看 NSG 设置),查看是否允许在承载主副本的服务器实例与辅助副本之间进行终结点端口通信(默认情况下为端口 5022)

运行以下 PowerShell 脚本,检查是否有已禁用的入站流量规则

Get-NetFirewallRule -Action Block -Enabled True -Direction Inbound |Format-Table


还可以找到端口拥有进程:运行类似于此 (的命令,例如使用端口 5022)

$port = 5022 

Get-Process -Id (Get-NetTCPConnection -LocalPort $port).OwningProcess |Select-Object Name, ProductVersion, Path, Id


可查询 sys.dm_hadr_availability_replica_states,查看可能有助于你诊断联接问题的 last_connect_error_number。 根据哪个副本存在通信困难,你可查询主要副本和次要副本:

select

 r.replica_server_name,

 r.endpoint_url,

 rs.connected_state_desc,

 rs.last_connect_error_description,

 rs.last_connect_error_number,

 rs.last_connect_error_timestamp

 sys.dm_hadr_availability_replica_states rs

 join sys.availability_replicas r on rs.replica_id = r.replica_id

where

 rs.is_local = 1

例如,如果次要副本无法与 DNS 服务器通信,或者在创建可用性组时副本的 endpoint_url 配置错误,那么你可能在 last_connect_error_description 中获得以下结果:

DNS Lookup failed with error "11001(No such host is known)"


在主要副本上运行以下查询,然后在无法连接的每个次要副本上运行此查询。 这将帮助你查找终结点 URL 和端口

select endpoint_url from sys.availability_replicas


sys.tcp_endpoints tep INNER JOIN sys.server_principals sp ON tep.principal_id = sp.principal_id WHERE tep.type = 4

比较每个查询的 endpoint_url 和端口,确保来自 endpoint_url 的端口与为每个相应副本上的终结点定义的端口匹配

备注

如果使用特定 IP 地址来侦听终结点,而不是默认的“全部侦听”,则可能需要定义使用特定 IP 地址而不是 FQDN 的 URL。


运行以下查询,以列出对相关服务器上的终结点具有连接权限的帐户,并显示分配给每个相关终结点的权限。

SELECT 

 perm.class_desc,

 prin.name,

 perm.permission_name,

 perm.state_desc,

 prin.type_desc as PrincipalType,

 prin.is_disabled

FROM sys.server_permissions perm

 LEFT JOIN sys.server_principals prin ON perm.grantee_principal_id = prin.principal_id

 LEFT JOIN sys.tcp_endpoints tep ON perm.major_id = tep.endpoint_id

WHERE 

 perm.class_desc = "ENDPOINT"

 AND perm.permission_name = "CONNECT"

 AND tep.type = 4;

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 

 INNER JOIN sys.endpoints ep ON sp.major_id = ep.endpoint_id

AND EP.type = 4

ORDER BY Permission,grantor, grantee; 


检查每个节点上是否有可能指向错误服务器的本地 HOSTS 文件条目。 在命令提示符下,使用以下命令打印 HOSTS 文件:

type C:\WINDOWS\system32\drivers\etc\hosts

Get-Content "C:\WINDOWS\system32\drivers\etc\hosts"


我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题

本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 SQLServer 错误 35250 到主要副本的连接处于非活动状态。 无法处理该命令。 故障 处理 修复 支持远程