SQL 2008 R2数据库变为REPLICATION,日志不断增长并且不能截断和收缩的解决方式
执行环境:windows server2003,sql
server2008 R2,数据库上布置CDC
用户反应系统报错是日志已满,系统不能执行。
查看日志文件时。发现日志文件已经达到15G,后来为了解决这个问题,干脆把数据库移到还有一个F盘,D盘专门放日志文件。空间有80G。
当时想这80G至少保证系统执行一周吧。谁知道系统刚执行两天。日志文件已爆涨到80G,D盘空间仅剩余10MB。数据库做不论什么动作都不能够。
重新为了应急把日志文件直接删除(先停掉服务,删除日所文件,再通过DBCC
CheckDB()命令检查数据库一致性问题),系统恢复了正常。
这时空间是有了,可是问题依然没有解决。可是日志文件依然猛涨。曾经用的截断和收缩日志方法全然不起作用?
解决方法:
步骤一:
查看日志信息,在查询分析器中执行例如以下代码来查看日志信息:
DBCC LOGINFO('数据库名称')
能够看到status=0的日志,代表已经备份到磁盘的日志文件;而status=2的日志还没有备份。当收缩日志文件时,收缩掉的空间事实上就是 status=0的空间,假设日志物理文件无法减小,这里一定能看到许多status=2的记录。
步骤二:
查看日志不能截断原因
活跃(active)的日志无法通过收缩来截断。有各种原因会使日志截断延迟,详细表现就是事务日志的物理文件无法通过截断、收缩来减小,通过以下的代码能够看到实例上每一个数据库的日志截断延迟原因:
usemaster
go
select*from
sys.databases
发现当前数据库的log_reuse_wait_desc的值为REPLICATION,其它数据库的log_reuse_wait_desc值为LOG_BACKUP、NOTHING…
log_reuse_wait_desc值的各种原因及解释例如以下:
NOTHING
当前有一个或多个可反复使用的虚拟日志文件。
CHECKPOINT
自上次日志截断之后。尚未出现检查点,或者日志头部尚未跨一个虚拟日志文件移动(全部恢复模式)。这是日志截断延迟的常见原因。
LOG_BACKUP
须要日志备份,以将日志的头部前移(仅适用于完整恢复模式或大容量日志恢复模式)。
注意:日志备份不会妨碍截断。
完毕日志备份后。日志的头部将前移。一些日志空间可能变为可反复使用。
ACTIVE_BACKUP_OR_RESTORE
数据备份或还原正在进行(全部恢复模式)。
数据备份与活动事务的执行方式同样。数据备份在执行时,将阻止截断。
ACTIVE_TRANSACTION
事务处于活动状态(全部恢复模式)。一个长时间执行的事务可能存在于日志备份的开头。
在这样的情况下,可能须要进行还有一个日志备份才干释放空间。
事务被延迟(仅适用于 SQL Server 2005 Enterprise Edition及更高版本号)。
“延迟的事务” 是有效的活动事务,由于某些资源不可用,其回滚受阻。
DATABASE_MIRRORING
数据库镜像暂停,或者在高性能模式下,镜像数据库明显滞后于主体数据库(仅限于完整恢复模式)。
REPLICATION
在事务复制过程中,与公布相关的事务仍未传递到分发数据库(仅限于完整恢复模式)。
DATABASE_SNAPSHOT_CREATION
正在创建数据库快照(全部恢复模式)。
这是日志截断延迟的常见原因,通常也是主要原因。
LOG_SCAN
正在进行日志扫描(全部恢复模式)。
这是日志截断延迟的常见原因。通常也是主要原因。
针对延迟日志截断原因的部分解决方式,
LOG_BACKUP
备份日志后再执行收缩就可以。
REPLICATION
这是我遇到的情况,但我根本没有启用过REPLICATION。是已离职同事原来创建一个复制数据库,后来没有删除干净而导致。还有还有一说法,这好像是SQLSERVER2008的一个BUG,解决方法是给标有“REPLICATION”的数据库随意一个表创建数据库事务复制(TRANSACTIONREPLICATION)。然后再删除,执行数据库与日志备份后,经常使用以下的日志收缩方法就能够完毕收缩:
USE [master]
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE --简单模式
GO USE 数据库名
GO
DBCC SHRINKFILE (N'数据库名_Log' , 5, TRUNCATEONLY) -->參数二(5)就是压缩到指定大小
GO USE [master]
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL --还原为全然模式
GO
附加:在创建数据库复制时,我也遇到了一个大麻烦,提示:在执行 xp_cmdshell 的过程中出错。调用 'CreateProcess' 失败,错误代码: '5'。使用了各种方法,均无效果。后来在网上找一个帖子说有可能是系统安装360的原因而导致,我就把把360先停掉,结果真的解决这个问题了。
SQL 2008 R2数据库变为REPLICATION,日志不断增长并且不能截断和收缩的解决方式的更多相关文章
- SQL 2008 R2 数据库镜像操作
镜像操作请参考:http://blog.csdn.net/dba_huangzj/article/details/35995083 应用程序数据库连接字符串(带见证服务器即自动故障转移): DBHel ...
- sql 2008 R2添加对MySql的远程服务器链接
(1).我的sql 2008 R2所在的系统为Windows server 2008 *64 (2).MySQL所在的系统为Windows server 2003 *86 我想要实现的是在sql 20 ...
- SQL Server 2008 R2数据库镜像部署
概述 “数据库镜像”是一种针对数据库高可用性的基于软件的解决方案.其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中.建议使用不同位置的两台服务器来承载.在 ...
- SQL Server 2008 R2数据库镜像部署图文教程
数据库镜像是一种针对数据库高可用性的基于软件的解决方案.其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中 概述 “数据库镜像”是一种针对数据库高可用性的基 ...
- SQL Server 2008 R2 数据库安装
操作系统 Windows server 2008 R2 数据库 SQL Server 2008 R2 注意:SQL Server 2008 R2需要操作系统首先安装.NET Frame ...
- Vcenter虚拟化三部曲----SQL Server 2008 R2 数据库安装
操作系统 Windows server 2008 R2 数据库 SQL Server 2008 R2 注意:SQL Server 2008 R2需要操作系统首先安装.NET Frame ...
- 如何修改SQL Server 2008 R2数据库的内存
本篇经验将和大家介绍如何修改SQL Server 2008 R2数据库的内存,希望对大家的工作和学习有所帮助! 工具/原料 SQL Sever 2008 R2数据库已安装 方法/步骤 1 打开 ...
- SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server2014同样适用
这篇文章主要介绍了SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server2014同样适用,需要的朋友可以参考下 一.配置主备机 1. 服务器基本信息 主机名称为:HOST_ ...
- SQL 2008升级SQL 2008 R2完全教程或者10.00.1600升级10.50.1600
http://blog.csdn.net/feng19821209/article/details/8571571 SQL 2008升级SQL 2008 R2完全教程或者10.00.1600升级10. ...
随机推荐
- C#实现ATM自动取款机
本篇用C#实现ATM自动取款机的一些功能.面临的第一个问题是:如何把与自动取款机相关的有形的.无形的方面抽象出来.大致如下: (1)关于用户帐号的类:Account(2)关于银行数据库的类:BankD ...
- MVC客户端使用 Mustache.js把json数据填充到模版中
使用Mustache的好处是:可以把一些反复用到的html部分定义成Mustache模版,以便多次使用.使用Mustache的大致步骤是: →从后台拿到json数据 →获取前台页面预先定义好Musta ...
- 如何使用 Core Plot 的 API 帮助文档
Core Plot 可是 iOS 下绝好的图表组件,虽说它的相关资料不甚丰富,特别是中文的,英文的还是有几篇不错的文章,不过 Core Plot 自身提供的 API 帮助文档,以及代码示例其实很有用的 ...
- iOS 5解决Could not instantiate class named NSLayoutConstraint问题
如果使用Xcode 4.5来新建项目,默认是支持AutoLayout的,但是AutoLayout是iOS 6的新特性,如果在iOS 5的simulator上运行程序,会出现Could not inst ...
- linux 字符终端terminal下 ftp的配置和启用
1. ftp组件一般不是linux的自带组件,在ubuntu 12中,就自带了ftp组件 vsftp,而在redhat 9中,就没有自带需要从安装光盘中或下载相应的ftp的rpm包. ~$ sudo ...
- chromium对网页获取favicon
每一个网页都有一个favicon,在历史记录的保存中须要用到.在content文件夹下,这个没有实现. 以下说一下我的实现过程: web_contents_impl.cc文件里有方法:WebConte ...
- [Android Pro] Swift 3.0多线程
本文只介绍Grand Central Dispath(GCD) 中央调度 个人认为一个GCD就够用了,可能是改版或是其他的在找之前写的多线程方法时发现不能用了,看文档之后发现改了,现在看上去更加简单易 ...
- Coursera课程《大家的Python》中一些资料
Printed copies of Python for Informatics are available for $10 or less from Amazon and $2 or less on ...
- String类对象的比较
1.字符串比较,是按照字符串(String)中每一个字符(char)的字段表顺序进行比较 /** * Compares two strings lexicographically(字典序,按照字典顺序 ...
- 处理MySQL更新表时Error Code: 1175. You are using safe update mode and you tried to update a table……
Error: 1175 SQLSTATE: HY000 (ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE) Message: You are using safe update ...