保留10%的已分配空间时删除事务日志

时间:2020-03-15 15:03:14

标签: sql-server

我的服务器空间有限,我必须定期删除交易。 此外,我使用下面的查询来回答此 StackOverFlow 问题:How do you clear the SQL Server transaction log?

USE db;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE db
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (db_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE db
SET RECOVERY FULL;
GO

但是,我希望这个简单的查询更加先进并且符合以下条件。

  • 删除事务日志当db_Log中剩余10%的可用空间时( 100 mb可用的 900 mb)
  • 事务日志文件必须具有固定大小(1GB)

1 个答案:

答案 0 :(得分:1)

这只是XYProblem。问题不是事务日志的大小,而是您没有备份事务日志并想知道为什么事务日志在增长。它正在增长,因为您没有对其进行备份。

您需要添加代理任务来定期创建事务日志备份,或更改恢复模型。考虑到您的声明“实际上事务日志不是很重要” 我建议使用后者,然后设置文件的最大大小:

ALTER DATABASE db SET RECOVERY SIMPLE;
GO

ALTER DATABASE db
MODIFY FILE (NAME=db_Log, MAXSIZE = 1024MB);