数据库''的事务日志已满.要找出无法重用日志中的空间的原因,请参阅sys.databases中的log_reuse_wait_desc列.请帮我解决这个问题.提前致谢.
Sch*_*zIT 45
毫无疑问,您正在运行数据库Full Recovery Mode,并且无法进行事务日志备份.
在SQL Server管理器中右键单击数据库,然后选中"选项"页面.从切换恢复模式Full,以Simple然后再次右击数据库.选择Tasks Shrink,Files.将日志文件缩小到合适的大小(我通常坚持使用数据文件大小的20-25%).
切换回Full Recovery Model,并立即进行完整的数据库备份.
您现在需要弄清楚是否需要能够将数据库恢复到某个时间点.如果是这样,请根据业务需求安排常规事务日志和差异备份.
如果企业可能存在一定数量的数据丢失,请安排完整备份并切换到Simple模式.
小智 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的列.最有可能的是它说BACKUP.接下来最可能的原因是TRANSACTION.
如果是BACKUP,这里有一些信息:
基本上,对于您的SIMPLE数据库,每天都要运行一个完整备份.对于FULL数据库,每天运行一次完整备份,每小时运行一次LOG备份.调整LOG数据库的频率以匹配在保持工作的同时丢失数据的能力.
管理备份的最简单方法是使用Ola Hallengren的维护脚本.访问他的网站并尝试使用它们.
如果您看到TRANSACTION作为原因,请尝试运行:
dbcc opentran
并追踪任何有开放交易的人.
| 归档时间: | 
 | 
| 查看次数: | 65686 次 | 
| 最近记录: |