症状
假设您有一个 Microsoft SQL Server 2014、2016 或 2017 的实例,该实例启用了缓冲池扩展 (BPE) 。 如果在 BPE 文件上遇到 I/O 错误,则可能会禁用 BPE,并记录类似于以下内容的缓冲区超时错误:
注意
L2 缓冲池写入错误...
已成功禁用缓冲池扩展。 正在删除缓冲池扩展“file_path”。
等待缓冲区闩锁时发生超时 -- 类型 4...
错误:845,严重性:17,状态:1。
等待页面 (page_id) 的缓冲区闩锁类型 4 时出现超时...
错误:5901,严重性:16,状态:1。
属于数据库“database_name”的一个或多个恢复单元无法生成检查点。 这通常是由于缺少磁盘或内存等系统资源造成的,或者在某些情况下由于数据库损坏造成的。 有关此失败的更多详细信息,请检查错误日志中以前的条目。
等待缓冲区闩锁时发生超时 -- 类型 3...
出现此问题时,一些孤立的缓冲区闩锁仍会保留,并且 DBCC CHECKDB、CHECKPOINTS 或 BACKUP LOG 等任何操作都会失败。
备注如果您更新到 SQL Server 2014 Service Pack 1 的累积更新 1,仍然无法解决此错误。
解决方法
累积更新信息:
此问题已在 SQL Server 的以下更新中修复:
SQL Server 2016 Service Pack2 累积更新 5
SQL Server 2014 Service Pack 3 累积更新 1
SQL Server 2014 Service Pack 2 累积更新 15
关于 SQL Server 的累积更新
SQL Server 的每个新累积更新都包含先前内部版本中的所有修补程序和安全修补程序。 我们建议您安装 SQL Server 的最新版本:
按需修补程序信息:
此问题已在 SQL Server 的以下按需修补程序更新中修复:
SQL Server 2016 SP2 CU4 的按需修补程序更新
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
参考资料
了解 Microsoft 用于描述软件更新的 术语 。