现象:
进行查询等操作时,提示““The log file for database 'tempdb' is full.Back up the transaction log for the database to free up some log space.”
进入企业管理器查看,database下显示no items,看不到任何数据库信息。
使用查询分析器
use tempdb
select * from tempdb.dbo.sysfiles
可以看到tempdb数据文件和日志文件信息,发现这两个档都在C盘。查看C盘发现只剩下700M空间,而tempdb 日志文件是10%增长,不限制增长大小,目前已有20G。按目前大小,一次增长10%,需要2G,而C盘剩余空间不足2G,不够扩展。
考虑以下几种解决方案:
解决方案1:重启SQL SERVER,会自动释放资源。因为重启SQL SERVER时,会重构tempdb数据库,即:tempdb数据库中的数据全部丢失。如果tempdb中有大量数据的话,也要备份后重启。
2:增加一个日志文件到其它盘
Alter database tempdb add log file ( NAME='templog1', FILENAME ='d:\SQLDATA\tempdb_log_1.ldf')
3:把tempdb数据库的日志文件改大一点,如果日志文件所在的磁盘空间足够的话。(适用于限制档大小的情况)
USE master
GO
ALTER DATABASE tempdb
MODIFY FILE
(NAME ='templog',
SIZE = XXXX)
GO
4:清空日志
dump transaction tempdb with no_log
dbcc shrinkfile ('templog',1)
执行完后,我们可以再通过sp_helpdb tempdb查看一下tempdb状态。如果tempdb可用的话,我们就可以在企业管理器中看到DATABASE信息,也可以执行增删查改动作了。
数据文件和日志文件放在系统盘下不太好,我们可以将tempdb的数据文件和日志移到D盘下面:
Use master
Alter database tempdb modify file (NAME='TEMPDEV',FILENAME='D:\SQLDATA\TEMPDB.MDF');
GO
Alter database tempdb modify file (NAME='TEMPLOG',FILENAME='D:\SQLDATA\TEMPLOG.LDF');
GO
The file "TEMPDEV" has been modified in the system catalog. The new path will be used the next time the database is started.
The file "TEMPLOG" has been modified in the system catalog. The new path will be used the next time the database is started.
关闭SQL SERVER
将C盘下面的文件移到目标文件夹
开启SQL SERVER
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10640532/viewspace-600822/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10640532/viewspace-600822/