症状
假设您在 Microsoft SQL Server 2016 中创建了一个数据库和一个主事务日志文件。 您运行一些事务来增加文件。 在这种情况下,当您重新启动数据库服务器时,将发生断言错误。 此外,还会生成以下微型转储文件:
注意
DateTime **转储线程 - spid = 0, EC = 0x0000026FEE9AB2C0
DateTime ***正在发送到 FilePath\FileName 的堆栈转储
日期时间 * *******************************************************************************
DateTime *
日期时间 * 开始堆栈转储:
DateTime * DateTime
DateTime *
日期时间 * 位置: FilePath\FileName
DateTime * Expression: ret == itFcb-lfcb_fSeqNo>
日期时间 * SPID:36
DateTime * Process ID: ProcessID
...
DateTime 错误:17066,严重性:16,状态:1。
DateTime SQL Server 断言:文件:FilePath<\FileName>, line=LineNumber 失败 断言 = 'ret == itFcb-lfcb_fSeqNo>'。 此错误可能与计时有关。 如果重新运行语句后错误仍然存在,请使用 DBCC CHECKDB 检查数据库的结构完整性,或重启服务器以确保内存中数据结构未损坏。
DateTime 错误:3624,严重性:20,状态:1。
DateTime系统断言检查失败。 查看 SQL Server 错误日志了解详细信息。 断言失败通常是由软件 bug 或数据损坏导致的。 若要检查数据库损坏,请考虑运行 DBCC CHECKDB。 如果你同意在安装过程中向 Microsoft 发送转储,则将向 Microsoft 发送一个小型转储。 更新可能来自 Microsoft 的最新服务包或技术支持的修补程序中提供。
解决方法
此问题已在 SQL Server 的累积更新中进行了修复:
关于 SQL Server 的累积更新
SQL Server 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
此问题已在 SQL Server 2016 Service Pack 2 累积更新 3 的以下按需修补程序中修复:
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
参考资料
了解 Microsoft 用于描述软件更新的术语。