Sql server DBCC SHRINKFILE以截断事务日志
我有一些数据库不会截断事务日志 这些数据库都处于简单的恢复模式,我们可以每天进行一次完整备份 我检查的第一件事是,是否有一些排序或打开的事务或阻止日志被重复使用的事情Sql server DBCC SHRINKFILE以截断事务日志,sql-server,sql-server-2008,transactions,sql-server-2012,Sql Server,Sql Server 2008,Transactions,Sql Server 2012,我有一些数据库不会截断事务日志 这些数据库都处于简单的恢复模式,我们可以每天进行一次完整备份 我检查的第一件事是,是否有一些排序或打开的事务或阻止日志被重复使用的事情 SELECT name, log_reuse_wait_desc FROM sys.databases WHERE log_reuse_wait <> 0 回到简单的问题: USE [master] GO ALTER DATABASE mydb SET RECOVERY SIMPLE WITH NO_WAIT 这对
SELECT name, log_reuse_wait_desc
FROM sys.databases
WHERE log_reuse_wait <> 0
回到简单的问题:
USE [master]
GO
ALTER DATABASE mydb SET RECOVERY SIMPLE WITH NO_WAIT
这对日志备份进行了排序,但我仍然存在磁盘空间不足的问题
因此,我拼命运行以下命令:
DBCC SHRINKFILE (N'wslogdb70_27_log', 0, TRUNCATEONLY)
我希望这会截断事务日志,而不是缩小它
- 我说得对吗
- 有没有任何文章/书提到这一点
简单
恢复中,则不能将日志备份
作为日志重用等待,因为除非恢复模式为完全
或批量
,否则甚至无法进行日志备份
此外,根据:
TRUNCATEONLY选项不会移动日志中的信息,但会从日志文件的末尾删除非活动VLF
要收缩日志文件,请使用
DBCC SHRINKFILE (wslogdb70_27_log, X)
其中,X
是以MB为单位的目标大小
注意不要将日志缩小太多,它需要文件中的一些可用空间才能工作,否则它将再次自动增长
关于自动增长,请尝试以MB为单位指定自动增长因子,而不是以百分比为单位。具体的大小取决于您没有提到的一些因素(例如,日志和数据文件的大小)
实际上,监视数据库并进行相应调整是您的最佳选择
DBCC SHRINKFILE (N'wslogdb70_27_log', 0, TRUNCATEONLY)
根据文档,SQL Server 2008 R2对我来说似乎运行良好-NOTRUNCATE仅适用于数据文件。日志文件不受影响…TRUNCATEONLY选项不会移动日志中的信息,但会从日志文件末尾删除非活动VLF。
DBCC SHRINKFILE (N'wslogdb70_27_log', 0, TRUNCATEONLY)