修补程序: 错误 9002,错误 3052 当您尝试添加或备份 SQL Server 2012年或 SQL Server 2014年日志文件

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3095156
症状
假定您在 Microsoft SQL Server 2012年或 2014 SQL Server 数据库中,使用 AlwaysOn 可用性组和大开放的活动事务存在,并且需要附加的日志空间。由于下列原因之一,日志文件不能增长,事务失败。
  • 缺乏其他文件空间
  • 日志文件配置为不增长
  • 日志文件已达到其已配置的最大大小
此外,您收到以下错误消息:
错误: 9002,严重性: 17 日状态: 9。
数据库的事务日志数据库名称>' 完全是 LOG_BACKUP。
运行日志备份后,您将收到另一条 9002 错误信息:
错误: 9002,严重性: 17 日状态: 9。
数据库的事务日志数据库名称>' 完全是 ACTIVE_TRANSACTION。
另一个日志备份后,您将会看到跟 5901 错误消息的其他 9002 错误消息:
错误: 9002,严重性: 17 日状态: 9。
数据库的事务日志数据库名称>' 完全是 AVAILABILITY_REPLICA。

无法在数据库中写入检查点记录数据库名称> 由于日志空间不足。请与数据库管理员联系,以截断日志或分配更多空间数据库日志文件。
错误: 5901,严重性: 16,状态: 1。
属于数据库的一个或多个恢复单位数据库名称>' 生成检查点失败。这通常是由于缺少系统资源,如磁盘或内存中,或在某些情况下,由于数据库损坏所致。检查有关此故障的详细信息的错误日志中以前的条目。
在后续的检查点或日志备份然后休回滚事务,可能会收到以下错误消息:
Msg 3052、 16,状态 1,第 4 行级
备份日志已不能登录的数据库更新数据库名称>'.随后的日志备份将需提前从备份点Id 为 1 的 LSN>' 到 'Id 为 2 的 LSN>' 日志空间可用于记录它们之后。
在收到这些消息时,你不再能够提交到数据库中,任何新的事务,无法增长日志文件或添加另一个日志文件。

解决方案
第一次 SQL Server 以下累积更新中修复问题: 建议: 设置 SQL Server 的累积更新
SQL Server 的每个新累积更新包含所有修补程序和所有安全修补程序,已包含在以前的累积更新。我们建议您下载并安装最新的累积更新 SQL Server:
替代方法
可以使用以下解决方法截断日志和恢复活动。
  1. 检查以验证辅助副本last_hardened_lsn (请参阅每个辅助副本 sys.dm_hadr_database_replica_states) 与主副本last_hardened_lsn。你可以通过运行下面的查询是连接主副本实例
    SELECT ags.name as AGGroupName,    ar.replica_server_name as InstanceName,    hars.role_desc,    db_name(drs.database_id)as DBName,    drs.last_hardened_lsn, drs.log_send_queue_size,    drs.synchronization_state_desc as SyncState,    ar.availability_mode_desc as SyncMode,    CASE drs.is_local WHEN 1 THEN drs.database_id ELSE NULL END as database_id    FROM sys.dm_hadr_database_replica_states drs    LEFT JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id    LEFT JOIN sys.availability_groups ags  ON ar.group_id = ags.group_id    LEFT JOIN sys.dm_hadr_availability_replica_states hars        ON ar.group_id = hars.group_id and ar.replica_id = hars.replica_id      WHERE db_name(drs.database_id) = '<database name>'
  2. 上主副本
    • 从可用性组中删除数据库。
    • 重新添加数据库可用性组。
  3. 对每个辅助副本
    • 重新添加数据库可用性组。
从可用性组中删除数据库,它将立即截断其日志并释放日志空间。

Last_hardened_lsn每个辅助副本上等同于的主副本,并且时间内数据库可用性组从中删除并重新添加每个次映像上的数据库进行无日志备份,如果成功将没有任何错误或无需还原日志备份对辅助副本重新添加辅助复制副本。

如果一个辅助副本不是当前的主副本,您必须从可用性组中删除数据库,辅助可以赶上前,可能必须辅助副本具有恢复以赶上之前重新将其添加到可用性组中,或放在辅助副本并重新设定种子数据库的日志备份,它完全和事务日志的数据库备份。
状态
Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的问题。

属性

文章 ID:3095156 - 上次审阅时间:10/19/2015 18:53:00 - 修订版本: 2.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbsurveynew kbfix kbexpertiseadvanced kbmt KB3095156 KbMtzh
反馈