SQL Server Service Broker 在 SQL Server 2000 上插入数据

发布于 2024-08-13 03:57:20 字数 445 浏览 7 评论 0原文

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

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

在这种情况下,我决定使用 Service Broker。因此,我有一个存储过程可以将信息从一台服务器插入另一台服务器,并且它运行良好。

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

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

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

I have two servers, the first one with SQL Server 2005 and the second one with SQL Server 2000. I want to insert data from the 2005 to the 2000 and I want to do it unsync (without distributed transactions because "save transaction" are used).

Once the information is inserted in the tables of the 2000 server, some instead-of triggers are fired to process this information.

In that scenario I decided to use Service Broker. So I have a Stored Procedure to insert information from one server to the other and it works perfectly.

But when I call this procedure from the target queue process message procedure it fails, and I don't know why!!

Also, I know it works because when I use the same structure (queues & stored procedures) to copy form one database to another on the same SQL 2005 server.

So it fails only between machines, anyone knows why or how to get more information about the cause of the failure? Or how to insert data unsync (I can't to use the SQL Agent because I want insert the information more frequently than 1 minute).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风和你 2024-08-20 03:57:20

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

The usual issue is that the SSB procedure uses WAITFOR and WAITFOR is incompatible with distributed transactions. The only solution is to get rid of the WAITFOR(RECEIVE) and use a ordinary RECEIVE instead.

朦胧时间 2024-08-20 03:57:20

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

insert into LinkedServer.The2000Db.dbo.The2000Table
(col1, col2, col3)
select col1, col2, col3
from The2005Table

Consider using a linked server instead of service broker. With a linked server, you can:

insert into LinkedServer.The2000Db.dbo.The2000Table
(col1, col2, col3)
select col1, col2, col3
from The2005Table
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文