如何更改队列/服务的目标服务名称

时间:2010-08-23 15:48:12

标签: sql-server sql-server-2005 service-broker

我有一个SQL Server 2005 Service Broker队列“ProductChangeMes​​sages”和一个Service Broker服务“ProductChangeNotifications”。这对是SqlDependency的支持我试图开始工作,但依赖的OnChanged不会触发。当正在观看的表更改订阅时(通过select * from sys.dm_qn_subscriptions的结果可见)将被删除。

SELECT * FROM sys.transmission_queue显示的队列中有一些消息,其队列名称为to_service_name,而transmission_status中的消息为

  

找不到目标服务名称。确保正确指定了服务名称和/或提供了路由信息。

因此,无论生成消息的是什么,都会尝试使用队列名称而不是服务名称作为to_service_name

如何更改此设置以使其使用正确的服务名称?

1 个答案:

答案 0 :(得分:1)

你做不到。您需要从依赖关系基础结构中订阅正确的服务名称。

要清理现有消息,您可以使用大核选项:alter database <dbname> set new_broker with rollback immediate;,它将清除每个现有的对话框/消息,但会保留所有服务/队列。细粒度选项是通过end dialog <handle> with cleanup逐个终止坏对话框。