为什么我的数据库日志文件占用大量空间?它几乎占了我硬盘的30GB
。即使删除了1,000,000
条记录,它也不会释放任何空间。
所以
1.
为什么日志文件占用了这么多空间(30gb
)?
2.
如何释放空间?
答案 0 :(得分:1)
1。为什么日志文件占用了这么多空间(30gb)?
2。如何释放空间?
IF恢复不是SIMPLE:
DBCC SHRINKFILE(2,256)
如果恢复很简单:
DBCC SHRINKFILE(2,256)
如果数据库日志仍未减小到目标大小,则使用@sepupic代码片段检查确切的原因
一些成员仍然提出并建议物理删除LDF文件。
我强烈建议不要这样做。与亚伦·伯特兰(Aaron Bertrand)密切相关的post:
一些您不想做的事情:
分离数据库,删除日志文件,然后重新附加。我不能 强调这可能有多危险。您的数据库可能无法恢复 起来,可能会令人怀疑,您可能必须还原到备份(如果 您有一个),等等。
答案 1 :(得分:1)
您需要进行维护工作backup the transaction log,并且 经常 :每10分钟左右一次。
每天进行一次完整备份是不够的。
或者,您可以将数据库的Recovery Model从FULL
更改为SIMPLE
。但是,如果这样做,您将失去执行时间点还原的能力。
答案 2 :(得分:1)
为什么我的数据库日志文件占用大量空间?
可能有更多原因,不仅是另一个答案中提到的2个原因。
您可以使用以下查询找到确切原因:
select log_reuse_wait_desc
from sys.databases
where name = 'myDB';
以下是BOL文章的链接,该文章描述了log_reuse_wait
下的所有可能原因:
sys.databases (Transact-SQL)
如何释放空间?
首先,您应该使用上面的查询来确定原因,然后应予以解决,例如,如果replication
损坏,则应将其删除或解决。
答案 3 :(得分:0)
1. Why is the log file taking this much space (30gb)?
这是因为Autogrowth / Maxsize
被设置为200,000 MB
2. how can I free up the space?
如Here所述,我使用了以下命令,文件现在小于200mb
ALTER DATABASE myDatabaseName
SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE (myDatabaseName_log, 1)
GO
ALTER DATABASE myDatabaseName_log
SET RECOVERY FULL
我还在数据库属性中将Autogrowh/Maxsize
设置为1000
的{{1}}(请参见下图)。
该链接介绍了更多信息,因此建议您参考该链接以获取详细描述和其他选项。
感谢@hadi提供的链接。