1

我有两台服务器,第一台使用 SQL Server 2005,第二台使用 SQL Server 2000。我想将数据从 2005 插入到 2000,并且我想不同步(没有分布式事务,因为使用了“保存事务” )。

一旦将信息插入 2000 服务器的表中,就会触发一些代替触发器来处理此信息。

在那种情况下,我决定使用 Service Broker。所以我有一个存储过程来将信息从一台服务器插入到另一台服务器,它工作得很好。

但是当我从目标队列进程消息过程中调用这个过程时它失败了,我不知道为什么!!

另外,我知道它可以工作,因为当我使用相同的结构(队列和存储过程)将一个数据库复制到同一 SQL 2005 服务器上的另一个数据库时。

所以它只在机器之间失败,任何人都知道为什么或如何获得有关失败原因的更多信息?或者如何不同步插入数据(我不能使用 SQL 代理,因为我希望插入信息的频率超过 1 分钟)。

4

2 回答 2

1

通常的问题是 SSB 过程使用 WAITFOR,而 WAITFOR 与分布式事务不兼容。唯一的解决方案是摆脱 WAITFOR(RECEIVE) 并改用普通的 RECEIVE。

于 2009-11-30T16:18:15.400 回答
0

考虑使用链接服务器而不是服务代理。使用链接服务器,您可以:

insert into LinkedServer.The2000Db.dbo.The2000Table
(col1, col2, col3)
select col1, col2, col3
from The2005Table
于 2009-11-30T15:43:34.900 回答