解决事务日志已满的问题(错误 9002)
2013-05-28 20:52
141 查看
本主题讨论对已满事务日志可以采取的几种应对措施,并就以后如何避免出现已满事务日志给出建议。如果事务日志已满,则 SQL Server 数据库引擎会发出 9002 错误。当数据库联机或恢复时,日志可能会满。如果数据库联机时日志已满,则数据库保持联机状态,但是只能进行读取而不能更新。如果恢复过程中日志已满,则数据库引擎将数据库标记为 RESOURCE PENDING。不管哪种情况,都需要用户执行操作才能使日志空间可用。
应对已满事务日志
正确应对已满事务日志在某种程度上取决于导致日志已满的情况。若要在给定情况下查找阻止日志截断的原因,请使用 sys.database 目录视图的log_reuse_wait 列和 log_reuse_wait_desc 列。有关详细信息,请参阅 sys.databases (Transact-SQL)。有关延迟日志截断的因素的说明,请参阅可能延迟日志截断的因素。
应对已满事务日志的备选方法包括:
备份日志。
释放磁盘空间以便日志可以自动增长。
将日志文件移到具有足够空间的磁盘驱动器。
增加日志文件的大小。
在其他磁盘上添加日志文件。
完成或取消长时间运行的事务。
下列部分介绍了这些备选方法。请选择最适用于您情况的响应。
创建事务日志备份
如何备份事务日志 (SQL Server Management Studio)
如何创建事务日志备份 (Transact-SQL)
SqlBackup (SMO)
移动日志文件
移动数据库文件
增加文件大小
如果禁用自动增长,数据库处于联机状态,并且磁盘上有足够的可用空间,则可采用以下方法之一:
手动增加文件大小以生成单个增量。
使用 ALTER DATABASE 语句启用自动增长以针对 FILEGROWTH 选项设置非零增量。
添加日志文件
添加和删除数据文件和事务日志文件 (Transact-SQL)
如何向数据库中添加数据或日志文件 (SQL Server Management Studio)
请参阅
sp_add_log_file_recover_suspect_db (Transact-SQL)
创建事务日志备份
可能延迟日志截断的因素
恢复模式概述
事务日志概述
使用事务日志备份
注意 |
---|
一般来说,事务日志用尽磁盘空间后,仍可以在只读模式下访问数据库。但是,启用快照隔离级别时,如果您正在删除堆(没有聚集索引的表)中的行且事务日志在虚影行的日志记录持久化前填充,则数据库将脱机。如果出现这种情况,数据库将自动重新启动,进行完全恢复后再联机。 |
正确应对已满事务日志在某种程度上取决于导致日志已满的情况。若要在给定情况下查找阻止日志截断的原因,请使用 sys.database 目录视图的log_reuse_wait 列和 log_reuse_wait_desc 列。有关详细信息,请参阅 sys.databases (Transact-SQL)。有关延迟日志截断的因素的说明,请参阅可能延迟日志截断的因素。
重要提示 |
---|
如果数据库在恢复过程中出现 9002 错误,则在解决此问题后,可使用 ALTER DATABASE database_name SET ONLINE 恢复数据库。 |
备份日志。
释放磁盘空间以便日志可以自动增长。
将日志文件移到具有足够空间的磁盘驱动器。
增加日志文件的大小。
在其他磁盘上添加日志文件。
完成或取消长时间运行的事务。
下列部分介绍了这些备选方法。请选择最适用于您情况的响应。
备份日志
在完整恢复模式或大容量日志恢复模式下,如果最近尚未备份事务日志,则请立即进行备份以免发生日志截断。如果从未备份日志,则必须创建两个日志备份,以允许数据库引擎将日志截断到上次的备份点。截断日志可释放空间以供新的日志记录使用。若要防止日志再次填满,请经常执行日志备份。创建事务日志备份
重要提示 |
---|
如果数据库被损坏,请参阅结尾日志备份。 |
如何创建事务日志备份 (Transact-SQL)
SqlBackup (SMO)
释放磁盘空间
您可以通过删除或移动其他文件的方法来释放包含数据库事务日志文件的磁盘驱动器上的磁盘空间。释放磁盘空间后,恢复系统将自动扩大日志文件。将日志文件移至其他磁盘
如果在当前包含日志文件的驱动器上无法释放足够的磁盘空间,请考虑将该文件移至空间充足的其他驱动器上。重要提示 |
---|
日志文件决不要放在压缩文件系统中。 |
移动数据库文件
增加日志文件的大小
如果日志磁盘上具有可用空间,则可以增加日志文件的大小。日志文件的最大大小是每个日志文件 2 TB。增加文件大小
如果禁用自动增长,数据库处于联机状态,并且磁盘上有足够的可用空间,则可采用以下方法之一:
手动增加文件大小以生成单个增量。
使用 ALTER DATABASE 语句启用自动增长以针对 FILEGROWTH 选项设置非零增量。
注意 |
---|
不管哪种情况,如果已达到当前大小限制,则应增加 MAXSIZE 值。 |
在其他磁盘上添加日志文件
使用 ALTER DATABASE <database_name> ADD LOG FILE,向具有足够空间的其他磁盘上的数据库中添加新日志文件。添加日志文件
添加和删除数据文件和事务日志文件 (Transact-SQL)
如何向数据库中添加数据或日志文件 (SQL Server Management Studio)
标识和管理长时间运行的事务
有关详细信息,请参阅管理长时间运行的事务。请参阅
参考
ALTER DATABASE (Transact-SQL)sp_add_log_file_recover_suspect_db (Transact-SQL)
概念
管理事务日志文件的大小创建事务日志备份
可能延迟日志截断的因素
恢复模式概述
事务日志概述
使用事务日志备份
其他资源
管理事务日志相关文章推荐
- 数据库“TSupervise” 的事务日志已满问题的解决之法
- xsession 登陆失败,查看日志后解决问题 错误为[ERROR] X server -- no display in range is available
- 解决在Windows和Windows Server的应用程序日志中记录了”事件ID 4107”或”事件ID 11”错误问题
- 如何解决重复日志问题,谈谈错误用返回值还是用抛异常进行处理
- 今天搞log4net插入错误日志去mysql数据库的时候出现了点问题,已解决。记录下解决方案
- 解决生产环境上日志报事务回滚的问题
- 解决 “数据库 'tempdb' 的日志已满。请备份该数据库的事务日志以释放一些日志空间” 的问题
- 【日常一篇】服务器事件ID1111日志错误(即打印机驱动问题)解决方法
- 解决apache 文件夹下 logs 错误日志文件过大的问题
- 解决 “数据库 'tempdb' 的日志已满。请备份该数据库的事务日志以释放一些日志空间” 的问题
- DB2在导入数据时,如果数据量过大,出现事务日志满的错误(Database transaction log is full)该如何解决,commitcount使用
- 求助解决 SQL SERVER 2005 log 事务日志增长太快的问题
- 解决开启SQL Server sql Always on Group 事务日志增大的问题
- PHP遇到问题时怎么解决(错误日志)
- 解决Mysql收缩事务日志和日志文件过大无法收缩问题
- Java性能分析及问题解决(二)jvm致命错误导致进程直接挂掉,错误日志分析及解决
- 解决在Windows和Windows Server的应用程序日志中记录了”事件ID 4107”或”事件ID 11”错误问题
- 解决事务日志已满的问题
- CENTOS下PHP不能将其错误日志单独输出到一个文件的问题解决
- 解决db2事务日志已满及日志磁盘空间已满问题办法详解