症状
假设您使用的是 Microsoft SQL Server 2012 或 SQL Server 2014。 当 tempdb 数据库的日志文件已满时,SQL Server 崩溃,并收到以下错误消息:
错误:9002,严重性:17,状态:4。由于 "ACTIVE_TRANSACTION",数据库 ' tempdb ' 的事务日志已满。错误:3314,严重级别:21,状态:3。在数据库 "tempdb" 中撤消已记录的操作时,在日志记录 ID (135:376:442)处出现错误。 通常,特定的故障在 Windows 事件日志服务中记录为错误。 从备份还原数据库或文件,或修复数据库。错误:3449,严重性:21,状态:1。必须关闭 SQL Server 才能恢复数据库(数据库 ID 2)。 数据库或者是无法关闭的用户数据库或系统数据库。 重新启动 SQL Server。 如果数据库在另一次启动后恢复失败,请修复或还原数据库。由于服务器关闭,SQL 跟踪已停止。 跟踪 ID = "1"。 这只是一条信息性消息;无需用户操作。
如果 tempdb 日志文件的大小不足以处理 tempdb 工作负荷,并且日志文件的自动增长设置为 " 关闭",则会出现此问题。 如果由于空间有限而导致 tempdb 回退失败,则 SQL Server 崩溃。 此修复程序支持在日志空间不足时更精确地计算保留空间。 此修补程序还可帮助避免 tempdb 中的回滚失败,方法是启用 tempdb 日志暂时增大。 这些更改有助于防止服务器崩溃。
解决方案
SQL Server 2014 的 Service pack 信息
若要解决此问题,请获取最新的 Microsoft SQL Server 2014 服务包。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2958069 如何获取 SQL Server 2014 的最新 Service Pack 有关 SQL Server 2014 Service Pack 1 (SP1)的详细信息,请参阅 在 SQL server 2014 Service Pack 1 中修复的 bug。
SQL Server 2012 的 Service pack 信息
若要解决此问题,请获取最新的 Microsoft SQL Server 2012 服务包。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2755533 如何获取最新的 SQL Server 2012 服务包
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。