sqlserver清除日志 【验证】

1.DUMP TRANSACTION [DATABASE_NAME] WITH  NO_LOG [收缩数据库是还真是必须的加上]
2.BACKUP LOG [DATABASE_NAME] WITH NO_LOG
3.收缩数据库文件(如果不压缩,数据库的文件不会减小)
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
4.如果想以后不让它增长
企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M

程序里面的方法:
压缩数据库日志
--1.清空日志
exec('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG')
--2.截断事务日志:
exec('BACKUP LOG ['+@dbname+'] WITH NO_LOG')
--3.收缩数据库文件(如果不压缩,数据库的文件不会减小
exec('DBCC SHRINKDATABASE(['+@dbname+'])')

 


方法1:
第一步:
DUMP TRANSACTION DATABASE_NAME WITH  NO_LOG
backup log DATABASE_NAME with no_log
第二步:
收缩特定数据库的所有数据和日志文件,执行 dbcc shrinkdatabase (DATABASE_NAME)
方法2:
另一种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
1: 删除LOG
分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法会提示"重新创建log"生成新的LOG,大小只有500多K。
注意:建议使用第一种方法。
如果以后,不想要它变大。
SQL2000下使用:
在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
或用SQL语句:
alter database 数据库名 set recovery simple
方法3:
如果数据库使用的是简单恢复模式,直接执行CHECKPOINT之后,再收缩一次数据库,则删除新的 MinLSN 之前的所有日志记录。
参考:
SQL联机丛书:CHECKPOINT,检查点和日志的活动部分

 

 

posted @ 2007-12-01 10:25  快乐就好  阅读(1166)  评论(0编辑  收藏  举报