suther
宁静以致远

在将SQL Server 2005升级到SQL Server 2008 R2,升级时间约30分钟,完成后,复制监视器中发现

进程无法在“XXX(服务器名)”上执行“sp_replcmds”。

解决方案1:
在分发服务器上执行下述操作
use 数据库名
EXEC sp_repldone @xactid =NULL, @xact_segno =NULL, @numtrans = 0, @time =0, @reset =1
EXEC sp_replflush

sp_replcmds (Transact-SQL)
返回标记为要复制的事务的命令。 此存储过程在发布服务器的发布数据库中执行。

sp_repldone (Transact-SQL)
更新用于标识服务器的最后一个已分发事务的记录。 此存储过程在发布服务器上的发布数据库中执行。
注意:
可以在紧急情况下使用此过程,以允许在有事务挂起复制时截断事务日志。

sp_replflush (Transact-SQL)
刷新项目缓存。 此存储过程在发布服务器的发布数据库中执行。

 

解决方案2:

 1、通过错误消息中的LSN,查找数据库日志文件中相应的事务 select * from fn_dblog(null,null) where [current
LSN]='0006d221:0000bbae:00XX'

2、查看相应的事务记录,找到所涉及到的数据库对象

3、在发布项目中取消该数据库对象

4、在发布中增加数据库对象项目

posted on 2012-06-15 10:19  suther  阅读(1938)  评论(0编辑  收藏  举报