博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL Server 2008 install SP3后,发布数据库log变得越来越大

Posted on 2012-03-08 10:15  nzperfect  阅读(1153)  评论(3编辑  收藏  举报

起因:
前一段时间在为一组sql server 2008 failover cluster安装sp3,之前是sq1.
windows server 2003 enterprise 64bit + sql server 2008 enterprise 64bit
failover cluster 是active/acitve 双实例

问题:
在两个节点都install sp3后,发现有一个sql server实例在切换时(其实也就是在restart sql server service),用SSMS连接时会显示“服务器处于脚本升级模式。此时只有管理员可以进行连接”,大概几分钟,之后就正常了,当时就并未重视。过了段时间,在例行维护切换时,问题重现,此时意识到之前安装sp3的时候应该存在问题。最近发现该实例上一个发布的库,log文件增长到了近30GB,于是考虑收缩该Log文件。但在收缩时,发现尽管不停的备份log,仍然无法收缩Log文件。

检查:

通过查看该库的log_reuse_wait_desc,发现值为ACTIVE_TRANSACTION



于是查看虚拟日志文件使用情况,发现有2000多个虚拟日志文件都为活动状态



查看活动的事务信息,发现一个名为tran_sp_mscreate_peer_tables自从2012.02.02 晚10点43起一起到现在,而这个时间是上次切换该cluster时间;


近一步验证,transaction_type=1标明是写操作;

从sql server errorlog内发现Error executing sp_vupgrade_replication.

推断应该是在生升发布订阅相关对象时失败,导致事务尽管已被发布到分发,但无法标记为已分发,也就始终无法截断它们并重用。

解决:
目前google到的方法大概是:
1.disabled sql agent service
2.stop sql server service and sql agent service
3.only start sql server service
4.execute sp_vupgrade_replication
5.restart sql server service
6.enable and start sql agent service.

在操作过程中,sql server 处于脚本升级模式,不可以连接。

 

2012.03.09补充:经邮件咨询微软支持组,得到官方解决方法:
官方解决方案:
http://support.microsoft.com/kb/2509302



相关讨论:http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/b77799d2-a931-467a-928d-49426d83d5ce/