机房在四月份改造中对数据库的软硬件进行了升级,具体情况是:原先旧有的数据库是采用主备两台1u的单机,在windows 2000的系统下分别安装好sql server 2000后,在主数据库上做一天一次的完整备份和每隔两小时的差异备份,在完整备份的同时进行发布;备数据库则对主数据库的完整备份进行订阅。改造后的配置则是使用了带两个节点sdb01和sdb02的群集,并使用sdb03进行原先的备数据库的订阅工作。由于sdb01和sdb02两台机器上使用了windows 2003的系统,考虑到使用群集的情况,选用sql server 2005的兼容性会更好。于是就需要将sql2000上的数据库迁移到sql2005,根据网上的方法在sql2000上进行了数据库备份,然后在sql2005上新建一个同名数据库,并使用还原数据库的方法覆盖该数据库,接着对还原后的数据库用户进行必要的修改,一切看似迁移成功。

但随着时间迁移,发现日志文件逐渐变大,三四个月后竟然达到10g之巨。期间有尝试过处理,方法如下:

1.清空日志
DUMP TRANSACTION 库名 WITH NO_LOG

2.截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG

3.收缩数据库文件(如果不压缩,数据库的文件不会减小)
同时也注意到将数据库的恢复模式从“完整”改为“简单”。但是操作后的日志非但没有减小,反而略有增大。也考虑到是否要使用分离数据库的方法将日志文件删除后,再附加数据库。但这只是治标不治本的方法,且对系统的运行存在影响。

这时看到一篇文章介绍,用DBCC UPDATEUSAGE命令修复数据库的行记录数,修复了一些错误,但是还是无法收缩。根据该文章的提示,使用了这样一个函数:DBCC OPENTRAN(Db_Name),显示类似下面的信息:

已复制的事务信息:
最早的分布式 LSN : (0:0:0)
最早的非分布式 LSN : (1051867:2025:1)
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

而在其它正常的数据库上运行这个命令,则没有前面三行东西。接着使用了exec sp_removedbreplication ‘Db_Name’,奇迹出现了,该数据库日志文件立马减少到了1兆多。

为什么会出现这样的情况呢?sp_removedbreplication的msdn解释是:该存储过程在发布服务器的发布数据库中或在订阅服务器的订阅数据库中执行。 该过程将从执行它的数据库中删除所有复制对象,但它不会从其他数据库(例如,分发数据库)中删除对象。非常的拗口,难于理解。下面这句话相信同样不好理解:如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。

换言之,通常如果你设置过数据库复制或发布,而后来设置失败并没有启用,可能会导致这个问题,你看不到跟复制有关的内容,但是在数据库里却存在这样的东西,于是日志被它堵住了,这成了一个永远无法完成的命令,所以后续的日志都无法截断。执行了这个命令以后,强制清除了复制内容。

因此我们的日志文件变得过大且无法正常截断问题的根源可能在于:从sql2000升级到sql2005的过程中存在兼容性问题或者sql2005存在bug,因为在升级过后群集的数据库发布与sdb03的订阅是正常的。

转载于:https://www.cnblogs.com/y0umer/archive/2011/07/05/3839314.html

sql server 2005日志文件过大问题解决后分析--针对发布订阅产生的日志问题相关推荐

  1. sql server 2005 express附加数据库出错解决方法——添加数据库用户

    今天想将项目里的数据库数据文件导入到数据库中单独处理,但是在使用sql server 2005 express附加数据库的时候出现错误,提示:无法更新数据库"xxx",因为数据库是 ...

  2. 安装SQL2005提示“SQL Server 2005 COM+ 目录要求”警告 解决方法

    From: http://blog.csdn.net/yaday/article/details/4099223 SQL Server 2005 COM+ 目录要求警告 ①.启动Distributed ...

  3. win2008不能连接mysql_win2008 r2 安装sql server 2005/2008 无法连接服务器解决方法

    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. 在使用G2服务时,测试服务器 ...

  4. sql express 无法启动服务_在Windows2012下安装SQL Server 2005无法启动服务的解决办法...

    因为安装了Windows2012操作系统,的确很不错,唯一的遗憾就是不支持Sql Server 2005的安装.找了很多办法,基本上都有缺陷.现在终于找到一种完全正常没有缺陷的办法了,和大家分享一下. ...

  5. pm2日志文件过大问题解决

    输入指令查看当前磁盘容量   df -h 定位大容量磁盘位置  du -h --max-depth=1 解决pm2 日志文件过大问题 日志文件占用的磁盘容量,那我就尝试清除日志文件,看能否解决问题 1 ...

  6. 修改SQL Server 2005 数据库文件名字

    对于SQLServer 2005的数据库文件名字的修改.不多说,见图: 对于数据库名的更改直接选中要修改的数据库,F2,你懂的,不懂的可以去屎了.....0.0 下面要修改数据库的文件名 原理就是利用 ...

  7. SQL Server 2005无法连接问题的解决办法

    今天早上准备开SQL SERVER2005搞下实验,谁知道打开后连接不上,提示: 在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许 ...

  8. Win7 不能安装SQL Server 2005 Management Studio Express.msi解决办法

    在Win7中安装SQL Server 2005 Management Studio Express.msi会出现一下提示:"错误码29506.......". 解决方案如下: 安装 ...

  9. 在SQL Server 2005 Express 中添加报表服务后 (Business Intelligence Development Studio) vs2005 加载程序集问题解决办法...

         前些日子在安装报表工具是出现了程序集加载不上的问题于是法帖子求助csdn论坛,但是很长时间了,最后还是自己恢复了自己,问题解决了,把它放上来看有没有朋友出现相同的问题,供参考. 发表于:20 ...

最新文章

  1. python 字符转义_2500字 字符串专题总结
  2. Spring Boot 动态修改定时任务cron参数
  3. 46. 全排列/47. 全排列 II
  4. 【Ubuntu引导】EFI系统分区.删除不掉,也不能格式化,如何粘力删除 efi 隐藏分区
  5. [译]36 Days of Web Testing(六)
  6. CNN卷积神经网络(二)
  7. 阿里用的java编码规范积累
  8. MATLAB图像去雾算法RETINEX实现
  9. php match_PHP8.0新功能之Match表达式的使用
  10. vue 按钮控制鼠标滚轮放大缩小
  11. Error: for..in loops iterate over the entire prototype chain
  12. 大学生集体恶搞学士服猥琐拍照,谁羞辱了谁?!(图)
  13. matlab仿真超声波测距,超声波测距仪制作-Arduino中文社区 - Powered by Discuz!
  14. html 防网页假死,JavaScript-如何防止由于脚本引起的浏览器假死
  15. 密钥配送问题解决方法
  16. 整数补码加减法运算法则
  17. 微信公众号创建菜单注意问题
  18. Coursera-MachineLearning-Week2编程题目整理
  19. 关于对接海康威视综合安防平台并使用SDK下载过车视频
  20. 使用蒲公英平台测试iOS APP(示例)

热门文章

  1. datagrip导入csv数据配合ajax+mysql+Flask实验
  2. 《统计学习方法》P59决策树绘制-sklearn版本
  3. debian下面的apt-fast安装
  4. 鼠标 ArcBall 局部坐标系 旋转模型
  5. 数据结构:堆python实现与堆排序
  6. Nginx + Tomcat 配置负载均衡集群
  7. springmvc+mybatis+dubbo+zookeeper分布式架构
  8. 前端开发总结--之关于FusionSphere WEBUI的想法
  9. Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结
  10. Nagios(页面)报错: Return code of 13 is out of bounds