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