症状
假设使用 SQL Server 2017,并且有许多SQL Server Integration Services (SSIS) 包,你可能会注意到 SSIS 或 Power BI 报告偶尔会出现以下连接超时错误:
“_Main_XXXXX:错误:SSIS 错误代码DTS_E_OLEDBERROR。 发生了 OLE DB 错误。 错误代码:0x80004005。”
OLE DB 记录可用。 源:“Microsoft SQL Server本机客户端 11.0”Hresult:0x80004005说明:“登录超时已过期”。
OLE DB 记录可用。 源:“Microsoft SQL Server本机客户端 11.0”Hresult:0x80004005说明:“由于登录响应延迟而无法完成登录过程”。
OLE DB 记录可用。 源:“Microsoft SQL Server本机客户端 11.0”Hresult:0x80004005说明:“TCP 提供程序:超时错误 [258]。 "."
否则,问题不限于 SSIS 或仅Power BI报表。 与SQL Server连接时,任何应用程序都可能会遇到性能问题和超时。
此修补程序引入了两个新列, error_code 和 op_historysys.dm_os_buffer_descriptors DMV。 Error_code 列表示最近尝试填充相关缓冲区时的错误信息。 Op_history 列以位格式表示缓冲区的操作历史记录, (每个操作 4 位,总共 16 个操作,最后 4 位表示最新的操作,并在时间) 时左移。
备注 此修补程序无法解决填充缓冲区页时看到的任何特定错误。 它仅公开有关缓冲区的错误代码和操作的信息,以便可以使用新信息执行其他故障排除。
根源
超时和性能问题是一般性的,可能有很多根本原因。 在此特定情况下,在尝试从数据文件中读取数据页和填充内存缓冲区时,会观察到许多错误和重试, (数据页) 的内存表示形式。 尝试填充未公开的缓冲区时,缓冲区填充错误的根本原因未明确标识为基础错误代码。
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。
解决方法
以下SQL Server累积更新中修复了此问题:
关于SQL Server的累积更新:
SQL Server的每个新的累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看SQL Server的最新累积更新:
参考
了解 Microsoft 用于描述软件更新的术语。