尝试从 SSMS 2016 读取错误日志时,SQL Server 2016 代理无法启动或“无法检索数据”错误

本文列出了使用旧版 MS ODBC 13 驱动程序时 SSMS 中出现的各种问题,以及这些问题的解决方法。

原始产品版本:SQL Server 2016 Developer
原始 KB 数: 3185365

症状

如果你有 Microsoft SQL Server 2016 RTM 或 SQL Server 2016 RTM CU1 命名实例,可能会遇到以下症状之一。

症状 1

SQL Server 代理日志文件显示类似于以下内容的消息:

2016-08-06 14:54:41 - ! [000] 无法连接到服务器“servername\instancename”;SQLServerAgent 无法启动
2016-08-06 14:54:46 - ! [298] SQLServer 错误:
65535,SQL Server网络接口:查找指定的服务器/实例时出错
[xFFFFFFFF]。 [SQLSTATE 08001]
2016-08-06 14:54:46 - ! [165] ODBC 错误: 0,
登录超时已过期 [SQLSTATE HYT00]
2016-08-06 14:54:46 - ! [298]
SQLServer 错误:65535,与 SQL Server 建立连接时发生与网络相关的错误或特定于实例的错误。
找不到或无法访问服务器。
检查实例名称是否正确,以及是否将 SQL Server 配置为允许远程连接。 有关详细信息,请参阅联机丛书SQL Server。 [SQLSTATE 08001]

症状 2

尝试读取SQL Server错误日志时,尝试失败,并返回类似于以下内容的错误:

无法检索此请求的数据。 (Microsoft.SqlServer.Management.Sdk.Sfc)
执行 Transact-SQL 语句或批处理时发生异常。 (Microsoft.SqlServer.ConnectionInfo)

此外,尝试执行xp_readerrorlog时,可能会触发以下错误:

消息 22004,级别 16,状态 1,第 0 行
无法打开环回连接。 有关详细信息,请参阅事件日志。
消息 22004,级别 16,状态 1,第 0 行
找不到错误日志位置。

症状 3

某些维护计划或 SQL 代理作业(例如用于删除旧备份或“无提示”报告文件的维护清理任务)失败。 对于清理任务,在运行相应作业时不会删除预期要删除的文件,并且不会将错误写入SQL Server日志。 执行 sp_readerrorlog 将导致症状 2。

原因

此问题是由 MS ODBC 13 驱动程序中的缺陷引起的。 SQL Server Management Studio (SSMS) 和SQL Server 代理使用此驱动程序连接到SQL Server计算机。

解决方案

此问题已在 MS ODBC 13.1 驱动程序中修复。