使用 SQL Server 2000,我收到以下错误。
数据库“tempdb”的日志文件已满。备份数据库的事务日志以释放一些日志空间。”
如何解决?我无法备份 tempdb。
我已经尝试了所有选项,例如:
- 备份日志 tempdb 与
truncate_only
no_log
用;转储 tran tempdb- 收缩数据库。
使用 SQL Server 2000,我收到以下错误。
数据库“tempdb”的日志文件已满。备份数据库的事务日志以释放一些日志空间。”
如何解决?我无法备份 tempdb。
我已经尝试了所有选项,例如:
truncate_only
no_log
用;转储 tran tempdb
您可能需要考虑将 tempdb 的恢复模式设置为
Simple
. 这应该可以解决您遇到的问题,因为它将回收 tempdb 事务日志中使用的所有空间。出于性能原因,MSDN 文档还建议将 tempdb 的恢复模型设置为简单。MSDN:http: //msdn.microsoft.com/en-us/library/ms175527.aspx
编辑
根据文档,对于 SQL Server 2005 - 2008 R2,tempdb 无法备份,应始终设置为
Simple
恢复模式。如果由于某种原因您没有使用Simple
tempdb 的恢复模型,我建议您切换到它。编辑 2
为了确定 tempdb 的恢复模式设置为简单,请执行以下存储过程:
检查 的结果
tempdb
,并确保 的status
列tempdb
显示如下:如果是这样,那么您的问题可能与您正在执行的操作有关。您是否尝试以事务方式写入临时表?您是否有未关闭的未结交易?是否有一项操作特别崩溃,或者一切都不起作用?您可能想查看有关 serverfault 的类似问题的答案,以获得更多想法。长话短说,如果您在将恢复模式设置为简单后仍然遇到此错误,我将开始查看您尝试执行的操作作为可能的罪魁祸首。
编辑 3
从它的输出
DBCC SQLPERF (LOGSPACE)
看来,您的 tempdb 日志文件只有 1.24 MB,这对我来说似乎是不必要的小。您可以使用企业管理器来增加日志文件的大小,或者您应该能够使用以下 SQL(尽管您可能需要通过检查 tempdb 上的文件来查找日志文件名):您可以尝试增加日志文件大小,看看是否有帮助。
由于您的恢复模式很简单,请检查您的 tempdb 日志文件自动增长。将其设置为不受限制的文件增长。还要确保选中“启用自动增长”
有一篇微软文章
http://support.microsoft.com/kb/307487
还要检查重新启动 SQL 服务器是否暂时解决了您的问题
如果您的数据库是 2005 或 2000,您可以使用这个: http: //www.codeproject.com/KB/database/ShrinkingSQLServerTransLo.aspx
如果是 2008 年,您可以使用以下语句:
希望有帮助,戴夫
以下链接可能会有所帮助:
http://blog.sqlauthority.com/2007/04/01/sql-server-tempdb-is-full-move-tempdb-from-one-drive-to-another-drive/
http://web.archive.org/web/20150116150813/https://web.archive.org/web/20080509095429/http://sqlserver2000.databases.aspfaq.com:80/why-is-tempdb-full-和-如何-我-预防-从-happening.html