sqlserver收缩日志的几种方式 [sql] --参考 压缩日志及数据库文件大小 /*--特别注意 请按步骤进行,未进行前面的步骤,请不要作后面的步骤 不然可能损坏你的数据库. 通常不建议作第4,6两步 第4步不安全,有可能损坏数据库或丢失数据 第6步若是日志达到上限,则之后的数据库处理会失败,在清理日志后才能恢复. --*/ --下面的全部库名都指你要处理的数据库的库名 1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志: BACKUP LOG 库名 WITH NO_LOG 3.收缩数据库文件(若是不压缩,数据库的文件不会减少 企业管理器--右键你要压缩的数据库--全部任务--收缩数据库--收缩文件 --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个容许收缩到的最小M数,直接输入这个数,肯定就能够了 --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个容许收缩到的最小M数,直接输入这个数,肯定就能够了 也能够用SQL语句来完成 --收缩数据库 DBCC SHRINKDATABASE(库名) --收缩指定数据文件,1是文件号,能够经过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1) 4.为了最大化的缩小日志文件(若是是sql 7.0,这步只能在查询分析器中进行) a.分离数据库: 企业管理器--服务器--数据库--右键--分离数据库 b.在个人电脑中删除LOG文件 c.附加数据库: 企业管理器--服务器--数据库--右键--附加数据库 此法将生成新的LOG,大小只有500多K 或用代码: 下面的示例分离 pubs,而后将 pubs 中的一个文件附加到当前服务器。 a.分离 EXEC sp_detach_db @dbname = '库名' b.删除日志文件 c.再附加 EXEC sp_attach_single_file_db @dbname = '库名', @physname = 'c:Program FilesMicrosoft SQL ServerMSSQLData库名.mdf' 5.为了之后能自动收缩,作以下设置: 企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩" --SQL语句设置方式: EXEC sp_dboption '库名', 'autoshrink', 'TRUE' 6.若是想之后不让它日志增加得太大 企业管理器--服务器--右键数据库--属性--事务日志 --将文件增加限制为xM(x是你容许的最大数据文件大小) 我采用的方式是 分离数据库 将log文件更名字 而后附加 EXEC sp_attach_single_file_db @dbname = '库名', @physname = 'c:Program FilesMicrosoft SQL ServerMSSQLData库名.mdf' 生成的Log文件500k左右 在2008中 上面的程序可能会有问题 08采用下面模式 [sql] --数据库名称为 test USE test GO ALTER DATABASE test SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE test SET RECOVERY SIMPLE GO USE test GO --这里的2根据 select * from sysfiles 来查询 通常数据位1 日志为2 DBCC SHRINKFILE (2 , 11, TRUNCATEONLY) GO USE test GO ALTER DATABASE test SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE test SET RECOVERY FULL GO