MSSQLSERVER_35267

适用于:SQL Server

详细信息

属性
产品名称 SQL Server
事件 ID 35267
事件来源 MSSQLSERVER
组件 SQLEngine
符号名称 HADR_DISCONNECTED_DB
消息正文 在可用性副本 '%.*ls' 上终止了与 %S_MSG 数据库的 %S_MSG S_MSG 数据库的 AlwaysOn 可用性组连接,其副本 ID 为 {%.8x-%.4x-%.4x-%.4x-%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x}。 这只是一条信息性消息。 不需要任何用户操作。

说明

当可用性组副本失去与数据库镜像终结点上的远程副本的连接时,将发生此消息。 下面是有关如何看到此错误的示例:

Always On Availability Groups connection with secondary database terminated for primary database 'ContosoDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.

可以看到,错误可能显示在主副本上,指示它与辅助副本通信丢失,反之亦然。

错误 35267 通常是间歇性的,并且可能会在根本原因自行解决的那一刻解决。 例如,间歇性网络问题可能会自行解决,连接可能重新建立。

在许多情况下,本地节点尝试连接的远程节点甚至可能不知道连接失败。 因此,可能只看到在其中一个副本上引发此错误,而不是同时引发此错误。

错误 35267 有时可能会与错误 35206 一起发生,当长时间未成功连接(例如,超过 10 秒)时引发此错误。

A connection timeout has occurred on a previously established connection to availability replica 'PRODSQL' with id [xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx].  Either a networking or a firewall issue exists or the availability replica has transitioned to the resolving role.

Always On Availability Groups connection with primary database terminated for secondary database 'ContosoHRDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoFinDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoMktngDb' on the availability replica 'PRODSQL' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.

AG 连接终止与远程副本可能会导致本地副本出现各种问题。 例如,如果 AG 使用 SYNC 模式并且连接丢失,则本地副本最终可能会等待远程确认。 因此,事务日志不会被截断,事务日志会耗尽空间(错误 MSSQLSERVER_9002),后来变为不可用(错误 MSSQLSERVER_9001)。 下面是发生此错误的一组错误的示例。 事务日志已满的原因是“AVAILABILITY_REPLICA”,这意味着此副本正在等待远程副本确认其已应用的日志记录。

Error: 9002, Severity: 17, State: 9.
The transaction log for database 'ContosoAnalyticsDb' is full due to 'AVAILABILITY_REPLICA'.
Error: 3314, Severity: 21, State: 3.
During undoing of a logged operation in database 'ContosoAnalyticsDb' (page (1:32573799) if any), an error occurred at log record ID (7672713:36228:159). Typically, the specific failure is logged previously as an error in the operating system error log. Restore the database or file from a backup, or repair the database.
State information for database 'ContosoAnalyticsDb' - Hardened Lsn: '(7672713:38265:1)'    Commit LSN: '(7672712:1683087:46)'    Commit Time: 'JuN  10 2022  5:51AM'

Always On Availability Groups connection with secondary database terminated for primary database 'ContosoAnalyticsDb' on the availability replica 'SQL2019DB' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.

Database ContosoAnalyticsDb was shutdown due to error 3314 in routine 'XdesRMReadWrite::RollbackToLsn'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.

Error during rollback. shutting down database (location: 1).
Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoAnalyticsDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.

Recovery of database 'ContosoAnalyticsDb' (6) is 0% complete (approximately 60177 seconds remain). Phase 2 of 3. This is an informational message only. No user action is required.

原因

  • 主要副本和次要副本之间可能存在网络连接问题
  • 主副本或辅助副本上的 SQL Server 或 OS 问题导致线程无法运行。 示例包括:
    • SQL OS 计划程序问题(非生成或死锁计划程序)
    • 计算机上的内存不足,导致系统上所有进程(包括 SQL Server)的工作集修整
    • 导致进程停止响应的操作系统问题
  • 导致主要副本或次要副本出现间歇性长时间等待的 I/O 缓慢问题

用户操作

以下信息概述了更常见的方案,但不是故障排除步骤的详尽列表。 出现此问题的具体原因可能包括一长串可能性。

连接问题

若要检查 SQL Server 中引发错误到远程 SQL Server 的连接问题,可以考虑以下步骤:

步骤 1. 确保远程 SQL Server 上的终结点处于活动状态

运行以下查询来发现终结点

SELECT
 tep.name as EndPointName,
 sp.name As CreatedBy,
 tep.type_desc,
 tep.state_desc,
 tep.port
FROM
 sys.tcp_endpoints tep
INNER JOIN sys.server_principals sp ON tep.principal_id = sp.principal_id
WHERE tep.type = 4

步骤 2. 测试与远程终结点的连接

使用 Test-NetConnection 验证连接。 如果终结点正在侦听且连接成功,请查找 。TcpTestSucceeded : True 将 ServerName 或 IP_Address 替换为远程 SQL Server,并将端口号替换为数据库镜像终结点的端口号。

Test-NetConnection -ComputerName <ServerName> -Port <port_number>
Test-NetConnection -ComputerName <IP_address> -Port <port_number>

步骤 3. 收集网络跟踪

间歇性网络错误通常很难跟踪,除非捕获网络跟踪,这会显示网络重置(丢弃的数据包)或类似问题。 有关详细信息,请参阅 0300 间歇性或定期网络问题

SQL Server 计划程序问题

如果 SQL Server 工作线程因各种原因而遇到计划程序问题,则服务传入请求的线程在计划程序问题最后一次时可以暂时停止响应。

步骤 4. 检查 SQL Server 上的计划程序问题

在 70 秒的非生成状态后,在 SQL Server 错误日志中记录典型的非生成计划程序问题。 但是,SQL Server 会比这更频繁地检查计划程序的状态,并在扩展事件中报告这些中间非生成状态。 如果在与错误 35267 相对应的远程节点上发现计划程序问题,请重点解决这些问题。 下面介绍了如何检查未达到 70 秒阈值的计划程序问题的短期出现次数,但会出现 10 秒或 20 秒的情况。

使用系统运行状况扩展事件文件

  1. 从事件发生时查找系统运行状况扩展事件文件。
  2. 双击 system_health_0_xxxxxxxxxxxxxxxxxx.xel 它以在 SQL Server Management Studio(SSMS)中打开它。 或者,可以使用 sys.fn_xe_file_target_read_file 该表查看或导入文件,以便更轻松地筛选。
  3. 搜索scheduler_monitor_non_yielding_ring_buffer_recorded事件的任何匹配项。 如果找到任何事件,则表明 SQL Server 检测到未生成计划程序事件,并正在记录事件。 这些事件早于实际的非易用计划程序内存转储和错误日志条目,这些事件在非生成状态的 60-70 秒后发生。 换句话说,可以使用 scheduler_monitor_non_yielding_ring_buffer_recorded 来检测未在错误日志中记录但仍在发生的短生存期非生成计划程序问题。 这可能是间歇性的原因,也可能是 AG 节点之间缺乏连接的短期原因。

使用诊断日志

  1. 从事件发生时(适用于 Windows 群集系统)找到 \Log 目录中的诊断日志。 文件名格式如下所示 SERVERNAME_MSSQLSERVER_SQLDIAG_x_xxxxxxxxxxxxxxxxxx.xel

  2. 双击以在 SQL Server Management Studio(SSMS)中打开该文件。 或者,可以使用 sys.fn_xe_file_target_read_file 该表查看或导入文件,以便更轻松地筛选。

  3. 在 SSMS 中打开后,找到component_health_result事件的实例,然后右键单击以下内容并选择“在表中显示列:组件”,state_desc

  4. 然后右键单击每个列,然后选择 “按此值 筛选”以应用以下筛选器:

    • 将component_health_result事件显示为唯一显示的事件
    • component field='query processing'
    • <> state_desc“clean”。
  5. 然后双击 数据 列以打开 XML 数据并在第一行中查找 trackingNonYieldingScheduler 值。

  6. 如果值与 0x0 该值不同,则表示 SQL Server 检测到非生成计划程序早期迹象,并在此处报告它。

    下面是 SQL Server 检测到计划程序地址为“0x4fedb840040”的非生成条件的示例:

     <queryProcessing maxWorkers="9600" workersCreated="2574" workersIdle="1883" tasksCompletedWithinInterval="175591" pendingTasks="3" ... trackingNonYieldingScheduler="0x4fedb840040">
    

操作系统内存不足

操作系统(OS)级别可能存在各种问题,导致这种间歇性缺乏响应。 常见内存不足。 在发生可疑问题的远程 AG 节点上,执行以下步骤:

步骤 5。 检查导致 SQL Server 内存分页到磁盘的 OS 内存问题

  1. 检查 Windows 系统事件日志中是否存在任何指示物理内存或虚拟内存不足的错误。

  2. 检查 SQL Server 错误日志或 Windows 应用程序事件日志中是否存在错误 17890,以查看计算机上的内存不足是否导致系统上所有进程(包括 SQL Server)的工作集修整。 错误如下所示:

    A significant part of SQL Server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 3383250, committed (KB):    9112480, memory utilization: 37%.
    

    有关详细的 t 拍摄步骤,请参阅 MSSQLSERVER_17890

步骤 6。 正确配置内存中的最大服务器内存和锁定页

  1. 将 SQL Server Max Server 内存配置为允许 OS 和其他进程使用具有可用内存的值。 建议的值,用于将 SQL Server 最大服务器内存设置为系统上不超过 75% 的 RAM 大小。 有关详细信息,请参阅 服务器内存配置选项
  2. 启用“锁定内存页”选项(Windows) 以防止对 SQL Server 缓冲区缓存进行大规模分页。

慢速磁盘 I/O

在某些情况下,I/O 速度过慢可能会导致 SQL Server 线程暂时停止响应,这可能会导致其他 AG 副本断开连接。

步骤 7. 解决任何缓慢的 I/O 问题

如果遇到指示 I/O 速度缓慢的错误,请排查 I/O 速度缓慢的根本原因。

SQL Server has encountered 2 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\TLOG\ContosoDb.ldf] in database id 9.  The OS file handle is 0x00000000000003BC.  The offset of the latest long I/O is: 0x0000003d26f600
SQL Server has encountered 2 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\DATA\t38data\ContosoDb2.mdf] in database id 7.  The OS file handle is 0x000000000000118C.  The offset of the latest long I/O is: 0x00000000012000
SQL Server has encountered 1 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\DATA\t38data\ContosoDb.mdf] in database id 9.  The OS file handle is 0x000000000000134C.  The offset of the latest long I/O is: 0x00000000012000

Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb2' on the availability replica 'SQLNODE1\INSTANCE19' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
Always On Availability Groups connection with primary database terminated for secondary database 'ContosoDb' on the availability replica 'SQLNODE1\INSTANCE19' with Replica ID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. This is an informational message only. No user action is required.
  • 更新所有设备驱动程序和固件,或者执行与 I/O 子系统关联的其他诊断
  • 筛选器驱动程序(例如防病毒程序)可能会降低磁盘访问速度。 若要提高访问速度,请从活动病毒扫描中排除 SQL Server 数据文件
  • 与硬件供应商和系统管理员合作,诊断和解决 I/O 速度缓慢的原因

有关详细说明,请参阅排查 I/O 问题和MSSQLSERVER_833导致 SQL Server 性能缓慢的问题。