有没有一种方法可以定期删除生成的 LDF 文件,因为它占用了我多达 100 GB 的空间,我想释放该空间。有没有办法可以编写一个定期删除这个 LDF 文件的程序?
2 回答
您需要了解如何进行 SQL Server 备份以及恢复模型如何工作:https ://msdn.microsoft.com/en-us/library/ms187048.aspx
但简而言之:
如果您将数据库设置为完全恢复模式,那么您需要进行事务日志备份:事务日志中的已用空间将可用于新事务。
如果您处于简单恢复模式,那么事务日志的大小需要根据您的峰值瞬态使用(或者它自然会达到这个级别)进行调整。
删除事务日志是个坏主意,尤其是在您不知道它是如何使用的情况下。
你绝对不能删除 LDF 文件只缩小到初始大小。缩小的步骤是
停止复制(如果有)
将数据库设置为简单恢复模式(如果设置为其他)
执行备份
执行收缩
第 1 步的 Sql 你可以在这里找到(从未使用过)https://cavemansblog.wordpress.com/2012/03/12/startstop-sql-server-replication-agent/
第 2 步的 Sql https://msdn.microsoft.com/en-us/library/ms189272.aspx
USE master ;
ALTER DATABASE youdatabase SET RECOVERY SIMPLE ;
...
ALTER DATABASE youdatabase SET RECOVERY FULL ;
第 3 步的 Sql https://msdn.microsoft.com/en-us/library/ms186865.aspx
BACKUP DATABASE your_database TO DISK = 'place_your_path_here';
第 4 步的 Sql https://msdn.microsoft.com/en-us/library/ms189493.aspx,顺便说一句,B 是满足您需求的完整脚本 :-)
DBCC SHRINKFILE (yourdabase_Log, 1);