我在 SQL Server 2005 上有一个 24Gb 的数据库。与之配套的 ldf 文件现在有 47Gb。由于磁盘空间不足,我无法运行数据库的备份。我的问题是:如何让这个 ldf 文件的大小降低很多(甚至为零),以及如何防止它在将来变得太大?数据库已使用 Brightstor 备份,但 ldf 仍然很大。
感谢您的帮助。
答案1
假设您的数据库/应用程序运行正常,并且没有进行太多更新。并且假设您没有进行任何事务日志备份,那么您需要执行以下两项操作之一:
- 开始进行事务日志备份(除了数据库备份)
- 或者(如建议的那样)将数据库切换到简单恢复模式
要将数据库设置为简单恢复,请使用 SSMS 或针对数据库运行以下 TSQL:
更改数据库[DBNAME]设置恢复简单;
一旦数据库使用简单恢复模式,请确保进行完整备份。之后,您需要通过运行以下 TSQL 告诉 SQLServer 明确收缩日志文件:
DBCC SHRINKFILE (文件名,目标大小)
其中文件名是数据库日志文件的名称(即 DBNAME_Log),目标大小以兆字节为单位(请记住,您不想将其设置得太小,否则它将不得不再次增长到“正常”水平)
答案2
首先想到的是,你的数据库上的日志记录模式是如何设置的?如果你将其更改为简单模式,它应该会减小它的大小。
这个链接可能有帮助:http://www.mindsdoor.net/SQLAdmin/TransactionLogFileGrows_1.html
答案3
如果备份因空间不足而失败,听起来就像您备份到与日志(可能还有数据?)相同的驱动器。希望 Brightstor 备份到服务器外的位置?
您是否需要日志备份来进行恢复?如果不需要,请切换到 SIMPLE 恢复模式,然后收缩事务日志文件。
如果确实需要日志备份,您可以通过运行带有 TRUNCATE_ONLY 的日志备份,然后进行日志收缩,然后进行完整的 DB 备份来回收空间,以便您可以再次启动备份链。
鉴于您的 ldf 非常庞大,我想象您只是没有在完整恢复模式下对数据库进行日志备份,因此它会持续增长,直到您备份它或切换到简单恢复。
答案4
您需要将数据库日志设置为简单(但前提是您对数据库进行了完整备份!)。
- 右键点击在你的数据库上
- 选择特性
- 选择选项
- 将恢复模式设置为简单的
这会很有效,并且最好是您的备份计划是完整备份每天。因为在这种情况下,您的日志不会被修剪,而且会飙升。
如果您使用祖父和父亲和儿子备份技术。这意味着每月完整备份,每周完整备份,然后每个日增量备份. 那么你需要完全恢复模式。
因此,如果您每天都运行完整备份,则可以将其切换到简单恢复模式,这样就不会有数据风险。如果您打算使用增量备份,则将其保留在恢复模式完全。