日期:2014-05-18  浏览次数:20704 次

收缩数据库出现“不能收缩 ID 为 2 的数据库中 ID 为 1 的文件,因为它正由其他进"
收缩数据库出现“不能收缩 ID 为 2 的数据库中 ID 为 1 的文件,因为它正由其他进"

这个问题该怎么处理啊!tempdb太多收缩去报错。求高人指点,重启不行!!!

------解决方案--------------------
问题原因:tempdb是SQL Server 2000中非常重要的一个系统数据库,这个数据库没有办法使用数据库维护计划来进行收缩。如果tempdb数据库日志满了后,会造成数据库备份失败、数据库无法写入数据等问题,因此,tempdb数据库和日志的收缩的日常维护就显得非常重要。

问题解决:我们不能使用维护计划来收缩tempdb数据库和日志文件,可以采用SQL脚本的方法,使用Agent作业来实现。

企业管理器—管理—SQL Server代理—作业,新建一个作业。

名称:tempdb 日志清除,收缩数据库

步骤:shrik 内容:

use tempdb
go
dbcc shrinkfile(tempdev,truncateonly)
dbcc shrinkfile(templog,truncateonly)

调度:每天早上6:00执行。

注意:我们公司的试验服务器安装的是SQL Server 2005,同样出现了tempdb日志已满的问题,使用上面的脚本却没有办法执行成功。后来发现这个数据库tempdb的故障还原模型被改成了“完全”。只要把tempdb的故障还原模型改回“简单”,再执行上面的SQL脚本就可以了。如果还不行,就需要使用SQL的单用户模式启动SQL,启动方法:开始—运行,输入“services.msc”,回车,找到服务MSSQLSERVER,先停止该服务,再在启动参数中写入“-c -m”,再点“启动”,启动SQL服务。然后再执行相应的操作即可。最后别忘了把启动参数去掉,再重启SQL及相关的服务,最重要的是Agent。