MS SQL 2005 日志文件的缩小

本文介绍MSSQL数据库中日志文件过大的问题及解决办法,包括使用T-SQL语句进行日志截断和收缩的具体步骤,适用于数据库维护人员。
日志截断之后, 删除日志有几种方式,缺省是不释放空间给操作系统的
除非你指定释放给操作系统才会看到日志文件有变小;

----给一段参考吧,尽管很简单, 但是就是有人搞不对,所以有必要放在这里------

USE Pubs
GO
BACKUP LOG Pubs WITH NO_LOG
GO
DBCC SHRINKFILE (2, 20)
GO

---这会将Pubs数据库物理日志文件的大小将减小到20M,如果逻辑日志大于20M,或者虚拟日志处于活动状态的文件大于20M,将收缩到活动日志或者逻辑日志的大小。
 
 
 

MSSQL 2005 日志收缩

----日志收缩

declare @name varchar(25)
declare @sql varchar(1000)
declare @logid int

DECLARE sysdatabase_name cursor for select /*top 5 部分处理*/ name from master.dbo.sysdatabases

open sysdatabase_name


FETCH NEXT FROM sysdatabase_name   into   @name

WHILE @@FETCH_STATUS = 0
BEGIN

   if ( @name not in ('xxx')) --不需要进行日志收缩
   begin
     set @sql =' declare @logid int
                 use   ' + @name+'
                 select @logid = fileid from sysfiles where right(rtrim(filename),3) = ''ldf''

                 BACKUP LOG ' + @name+' WITH NO_LOG    --切断日志
                 DBCC SHRINKFILE (@logid) '

     exec(@sql)

   end

   FETCH NEXT FROM sysdatabase_name   into   @name

END

CLOSE sysdatabase_name
DEALLOCATE sysdatabase_name


 

我公司的生产管理系统,数据库用的是MS SQL,有一次晚上数据升级后,数据库的log变成了10几G,这么大的日志确实有点吓人,害的备份也增加了,且日志大小不减。google了一下,参考了一些网友的方法,找到了解决办法,如下:
1、打开sql server management studio.
2、服务器名上右键->Nnew Query。
3、输入DUMP TRANSACTION 数据库名 WITH NO_LOG,再点击执行按钮执行。
 (DUMP TRANSACTION msc2003_rfid_zh WITH NO_LOG)
4、数据库名右键->task->shrink-》file。
选择日志文件,在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值