在将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、在发布中增加数据库对象项目