下面所讲的是用在sql server 2008上面的,在其它版本上不能保证能够成功执行。
有时候我们经常会碰到数据库日志满的情况,有时候可能导致我们的程序出错,比如说:the transaction for database is full........,下面看看怎么收缩日志。
--在sql server 2008上,收缩日志之前必须把数据备份等级设置为simple(简单),切记!
ALTER DATABASE your_database_name SET RECOVERY SIMPLE
GO
-- 收缩
DBCC SHRINKFILE (2,30) //30单位为M,日志文件的大小
GO
-- 更改模式为FULL ,再改回来,如果本身就已是simple,那就不必要了
ALTER DATABASE your_database_name SET RECOVERY FULL
GO
ALTER DATABASE your_database_name SET RECOVERY SIMPLE
GO
-- 收缩
DBCC SHRINKFILE (2,30) //30单位为M,日志文件的大小
GO
-- 更改模式为FULL ,再改回来,如果本身就已是simple,那就不必要了
ALTER DATABASE your_database_name SET RECOVERY FULL
GO
再多说一句,SQL SERVER 2008已不支持 back log 中的 no_log与transaction_only
总之,养成良好的日志备份或清理习惯是最好的方法!不要临时抱佛脚(跑去baidu,google)