数据库''的事务日志已满。要找出无法重用日志中的空间的原因,请参阅sys.databases中的log_reuse_wait_desc列。 请帮我解决这个问题。 提前谢谢。
答案 0 :(得分:45)
毫无疑问,您正在Full Recovery Mode
中运行数据库,但无法进行事务日志备份。
在SQL Server管理器中右键单击数据库,然后选中“选项”页面。将恢复模型从Full
切换到Simple
,然后再次右键单击该数据库。选择Tasks
Shrink
,Files
。将日志文件缩小到合适的大小(我通常坚持使用数据文件大小的20-25%)。
切换回Full Recovery Model
,立即进行完整的数据库备份。
您现在需要弄清楚是否需要将数据库恢复到某个时间点的能力。如果是这样,请根据业务需求安排常规事务日志和差异备份。
如果企业可能存在一定数量的数据丢失,请安排完整备份并切换到Simple
模式。
答案 1 :(得分:16)
最可能的答案是您需要运行日志备份,或者打开交易。
这里有更多可以帮助你...
在您的服务器上运行此脚本:
-- last FULL backup
;with FULLBUs
as (
select d.name, max(b.backup_finish_date) as 'Last FULL Backup'
from sys.databases d
join msdb.dbo.backupset b
on d.name = b.database_name
where b.type = 'D'
group by d.name
),
-- last LOG backup for FULL and BULK_LOGGED databases
LOGBUs
as (
select d.name, max(b.backup_finish_date) as 'Last LOG Backup'
from sys.databases d
join msdb.dbo.backupset b
on d.name = b.database_name
where d.recovery_model_desc <> 'SIMPLE'
and b.type = 'L'
group by d.name
)
-- general overview of databases, recovery model, and what is filling the log, last FULL, last LOG
select d.name, d.state_desc, d.recovery_model_desc, d.log_reuse_wait_desc, f.[Last FULL Backup], l.[Last LOG Backup]
from sys.databases d
left outer join FULLBUs f
on d.name = f.name
left outer join LOGBUs l
on d.name = l.name
where d.name not in ('model', 'TempDB')
order by d.name
此查询将概述您的数据库,它们使用的恢复模型,日志已满的原因以及运行上次FULL和LOG备份的时间。
查看标有 log_reuse_wait_description 的列。最有可能是备份。接下来最可能的原因是 TRANSACTION 。
如果是备份,这里有一些信息:
基本上,对于您的SIMPLE数据库,每天都要运行一个完整备份。对于FULL数据库,每天运行一次完整备份,每小时运行一次LOG备份。调整LOG数据库的频率,以匹配在保持工作的同时丢失数据的能力。
管理备份的最简单方法是使用Ola Hallengren's maintenance scripts。访问他的网站并尝试使用它们。
如果您看到 TRANSACTION ,请尝试运行:
dbcc opentran
追踪那些有开放交易的人。
答案 2 :(得分:1)
如果您的数据库恢复模型已满,并且您没有日志备份维护计划,则会收到此错误,因为事务日志因LOG_BACKUP
而变满。
这将阻止您像收缩一样对此数据库执行任何操作,并且SQL Server数据库引擎将引发9002错误。
要克服此行为,我建议您查看此The transaction log for database ‘SharePoint_Config’ is full due to LOG_BACKUP,以显示解决此问题的详细步骤,例如日志备份维护计划。
答案 3 :(得分:0)
右键单击数据库\ Properties \ Files。
您将拥有一个包含数据库文件的表,其中包含一个日志文件。只需将初始大小扩展到合理的数量。
答案 4 :(得分:0)
这样做 右键单击数据库节点 - &gt; Tasks-&gt;备份 - &gt;常规(在标签中) - &gt;设置&#34;备份类型&#34;到&#34;交易日志&#34; - &gt;行。