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

Sql server 如何更改队列/服务的目标服务名称,sql-server,sql-server-2005,service-broker,Sql Server,Sql Server 2005,Service Broker,我有一个SQL Server 2005 Service Broker队列“ProductChangeMessages”和一个Service Broker服务“ProductChangeNotifications”。这对是一个SqlDependency的后台,我正试图开始工作,但依赖项的onchange没有启动。当正在监视的表更改订阅时(通过sys.dm_qn_subscriptions的select*结果可见),订阅将被删除 队列上有消息显示为SELECT*FROM sys.transmissi

我有一个SQL Server 2005 Service Broker队列“ProductChangeMessages”和一个Service Broker服务“ProductChangeNotifications”。这对是一个
SqlDependency
的后台,我正试图开始工作,但依赖项的onchange没有启动。当正在监视的表更改订阅时(通过sys.dm_qn_subscriptions的
select*结果可见),订阅将被删除

队列上有消息显示为
SELECT*FROM sys.transmission\u queue
,它们的
to\u service\u name
为队列名称,并且处于
transmission\u status
状态

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

因此,似乎生成消息的任何东西都试图使用队列名称而不是服务名称作为
to\u service\u name


我如何才能更改它,使其使用正确的服务名称?

您不能。首先,您需要从依赖关系基础结构中使用正确的服务名称进行订阅

要清理现有消息,可以使用big nuke选项:
alterdatabase set new_broker with rollbackimmediate将清除所有现有对话框/消息,但保留所有服务/队列。细粒度选项是通过
end dialog with cleanup
逐个终止坏对话框