刚注册的,提个问题SQL Server 2005 SP2中的复制发布好像还挺复杂的。简单地说,现在配了个允许排队更新的日志发布,实现双向更新。
有一次把原来的订阅删除了,把订阅服务器改了个名字再新建了订阅,结果
就出错了。总说是 队列读取器代理 出错,总是提示说找不到原来的订阅,将中止。这个有办法解决吗?sp_subscription_cleanup什么的大概执行了一下也没什么效果。
附详细信息:
--------------------------------------------------------------------------------
SQL Server 2005 SP2错误消息:
将排队消息应用到发布服务器时失败 (源: MSSQL_REPL,错误号: MSSQL_REPL36046)
获取帮助: http://help/MSSQL_REPL36046 (当然啦,就是说没有任何帮助的意思!)日期 2008-6-3 9:41:42
日志 作业历史记录 ([server001].6)步骤 ID 2
服务器 server001
作业名称 [server001].6
步骤名称 运行代理。
持续时间 15.05:55:25
SQL 严重性 0
SQL 消息 ID 0
已通过电子邮件通知的操作员
已通过网络发送通知的操作员
已通过寻呼通知的操作员
重试次数 0消息
-DistributionDB distribution
-DistributorSecurityMode 1
-Continuous
-XJOBID 0x43C9C2E6DCBE764A9E2466864F3B5B86
-XJOBNAME [server001].6
-XSTEPID 2
-XSUBSYSTEM QueueReader
-XSERVER server001
-XCMDLINE 0
-XCancelEventHandle 00000F98
-XParentProcessHandle 000007B0
2008-06-18 07:36:54.843 已启动队列读取器代理 [server001].6 (Id = 1)
从代理配置文件获取的参数值:
-historyverboselevel 1
-logintimeout 15
-pollinginterval 5000
-querytimeout 1800
2008-06-18 07:37:07.609 队列读取器代理在连接“server001”上的
“datahouse”时遇到错误“该订阅已删除,无法更改发布服务器。
请用 sp_subscription_cleanup 来清除触发器。请确保正确定义了颁发和订阅,并确保
这两台服务器都在运行。

解决方案 »

  1.   

    如果你是指通过改计算机名实现改名的
    则估计是你遗漏了一些步骤, 检查下面的 T-SQL 执行的结果是否相同, 结果是否至少有一个与你的计算机名不同SELECT 
    @@SERVERNAME, 
    SERVERPROPERTY(N'ServerName')
    如果是, 则说明你执行下面的 T-SQL 进行修正(注意修改脚本中的计算机名):DECLARE
    @server_name sysname

    SELECT 
    @server_name = name
    FROM sys.servers 
    WHERE server_id = 0
    IF @@ROWCOUNT > 0
    EXEC sp_dropserver @server_name, 'droplogins'EXEC sp_addserver '你的计算机名', 'LOCAL'
      

  2.   

    楼上的,不是这样的问题啊。我说的所谓改名,实际上是把原来那个机器格式化了重新装了一个服务器,且换了一个主机名称
    现在主要是在 复制的发布服务器上始终有残留的队列数据,就是从原来的名称的订阅中传过来的更新数据,
    怎么样把这些数据清除?或者让SQL忽略这些?
    微软的提示是“请用 sp_subscription_cleanup 来清除触发器。请确保正确定义了颁发和订阅,并确保 
    这两台服务器都在运行”,关键是现在原来那个名称的订阅机器已经不存在了