关于 templog日志文件收缩

来源:互联网 发布:阿里云 王坚 编辑:程序博客网 时间:2024/05/16 08:58

无意间发现系统数据库的templog.ldf 文件很大,500G磁盘空间,templog.ldf 占用了101G,当时首先想到的就是收缩和重建log文件。

日志查看方法一:dbcc sqlperf(logspace)

日志查看方法二:

select db_name(database_id) dbname, 
       type_desc,      --数据还是日志 
       name,           --文件的逻辑名称 
       physical_name,  --文件的物理路径 
       state_desc,     --文件状态 
       size * 8.0/1024 as '文件大小(MB)'         
from sys.master_files 
where type_desc='LOG'

因为我的数据库是2008 R2的版本,当时首先想到是用SQL 2005 的处理方式,截断事务日志和卸载装载数据库的方式处理

SQL 2005 的处理

方法一:

一:backup log tempdb with no log  (备注:截断日志并不会减少物理日志文件的大小,而是减小逻辑日志文件的大小,并释放磁盘空间以供重新使用)

二:dbcc shrinkdatabase (temp,50%) (备注:以上执行成功后,需要对数据库进行收缩)

方法二:

卸载装载数据库方式:

一:execute sp_detach_db temp (备注:卸载数据库)

二:execute sp_attach_single_file_db temp, 'd:\date\templog.ldf' (备注:装载数据库)

到了2008的版本,以上方法都不适用,网上也找很多说法,有回复说系统数据库不允许收缩,只能alter 存储路径,本来就是在D盘 ,数据库也没有其他盘了,也试着重启server服务器,都不起作用,如果还有其他盘符,可以试用这种方式改变存放路径

ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');

ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');

最后在 http://bbs.csdn.net/topics/390606782 的帖子里看到版主(不想长大啊) 回复的处理方式试了一下,100G的log减小到25G,

使用DBCC shrinkfile(templog,1024),为什么收缩是1024M,templog还是25G,奇怪了,我记得开始的时候也使用过该方法,但不成功,详细还在研究,等待大神再指点。

关于templog更详细的介绍,可参照:https://technet.microsoft.com/zh-cn/library/ms176029.aspx和http://blog.csdn.net/dba_huangzj/article/details/7641534

 

 

 

 

 

 

 

0 0
原创粉丝点击