如何删除sql数据库的日志文件

说白了,删除一个SQL数据库日志文件需要三个步骤:分离数据库、删除日志文件、重新附加。
不过操作前需要备份,不然数据丢失了哭都来不及了。

我先说最重要的事情。
如果您断开数据库时该数据库已被其他人使用,则需要先点击“删除”来断开连接。
去年我们运行该项目时,我们忘记先注销。
结果整个团队在那里等了两个小时。
说实话,当时挺尴尬的。
还有一点:不要直接删除日志文件,先将其复制到本地备份。
浏览存储目录时,请记住日志文件通常称为 it_log.LDF,而不是 it.mdf。

还有另一个关键细节。
连接数据库时,日志文件项会显示红叉。
不要惊慌,这很正常。
起初我以为系统出了问题,但后来我意识到出了问题,并意识到日志消失了。
等等,还有一件事。
当您创建新的日志文件时,系统会询问您是否要创建它。
只需单击“确定”即可。

很多人没有注意到这一点。
分离和附加操作将暂停数据库服务。
建议在清晨无人使用时执行此操作。
不过,有些公司使用特殊版本的SQL Server,根据您的具体情况,操作过程可能会有所不同。

建议操作前先确认备份,以免出现问题时混乱。
对了,您平时是如何处理这种高风险的操作的呢?

如何删除sql数据库的日志文件

说起来,我之前在做SQL数据库维护的时候其实也遇到过这种情况。
记得那是2 01 9 年的时候,我们公司的SQL Server系统中“it”数据库的日志文件太大了,几乎占满了磁盘空间。
让我告诉你一些它是如何工作的。

首先,您需要进入SQL Server Enterprise Manager或SQL Server Management Studio(简称SSMS)。
你一定知道这一点,对吧?然后,找到“此”数据库,右键单击,选择“所有任务”,然后选择“分离数据库”。
这时候如果发现数据库还和其他东西连接着,就要先断开连接,然后detach。

分离后,需要找到日志文件,该文件通常与主数据文件相同,并以数据库命名,例如“it_log.LDF”。
在删除文件之前,您需要确保该文件未被任何人使用。
虽然说实话,有时候我懒得备份删除,但是最好还是先备份一下,以免发生什么事情。

然后,返回企业管理器或 SSMS,转到数据库列表,右键单击“数据库”,选择“所有任务”,然后选择“附加数据库”。
您将获得之前分离的数据文件“it_Data.MDF”,然后您将在日志文件中看到一个红十字,因为它已经消失了。
然后单击“确定”,系统将要求您确认没有日志文件。
如果单击“确定”,系统将自动为您创建一个新的日志文件。

这个过程我已经做过好几次了。
说实话,有时候操作起来还是挺麻烦的。
后来我了解到,如果新的日志文件变大了,可以重复这个步骤。
然而,重复删除和创建并不是一个好主意。
您需要根据实际情况调整日志文件的增长策略,或者定期备份日志。

最后,虽然这些步骤看起来很简单,但您在操作之前需要备份数据,以防止出现任何意外。
这个过程我已经用过很多次了,现在想起来还是有点紧张。

SQL Server清理 .ldf数据库日志文件

说白了,清理SQL Server的.ldf日志文件只有三种方法:收缩、更改恢复模式、删除和重建,但你需要了解每种方法的具体原理。

我们先来说说最重要的收缩日志。
去年我们跑了一个电商项目,日志文件达到了2 0G。
只需使用SSMS,点击“任务”->“收缩”->“文件”并将日志类型设置为“日志”即可。
但有一个关键细节:在收缩之前,必须在“重新组织页面”中输入一个值,例如5 00MB,否则收缩后文件仍然很大——用行话来说,这称为雪崩效应。
事实上,前面的轻微延迟会使后面的整个事情下降。
还有一点是建议在半夜运行收缩操作。
对于一个3 000左右大小的数据库,用户反映白天运行时会卡住。
后来他们发现事情有些不对劲。
原来是收缩太强,导致I/O增加。

还有另一个重要细节:在更改恢复模式之前您需要了解它。
简单模式相当于扔掉了时间点恢复功能。
去年没有运维人员关注,结果客户投诉直到昨晚才恢复。
说实话,当时确实挺尴尬的。
操作时,需要先备份,然后右键单击数据库,点击“属性”->“选项”,将恢复模式设置为“简单”,但请记住,一旦更改,就无法返回。

在删除和重建的时候,很多人都没有考虑到这一点。
与数据库断开连接时不要握手。
数据库目录下的ldf文件不能删除。
起初我以为直接删除它就足够了。
结果系统请求找不到该文件。
后来我发现必须在SSMS中点击“添加”才能将.mdf文件添加回来,系统会自动重建日志。
在删除日志文件之前,请务必使用 DBCC CHECKDB 验证数据完整性。
去年有一个项目删除了错误的日志导致主键索引崩溃,造成巨大损失。

等等,还有一件事,最好使用T-SQL查看路径,SELECT name,physical_name FROM sys.master_files WHERE database_id = DB_ID('yourdb') 比点属性快得多,特别是对于拥有数百个数据库的服务器。
收缩日志时不要继续运行。
例如,使用脚本每周五早上检查日志大小。
如果超过1 5 %,则再次收缩。
这个比例是一个经验值,必须根据业务进行调整。

建议您尝试使用SQL Agent Job自动管理日志。
很多人不明白这一点,但是一旦设置好了,日志管理就自动化了,也就省心多了。