【问题标题】:Cannot drop SqlQueryNotificationService queue无法删除 SqlQueryNotificationService 队列
【发布时间】:2017-09-14 05:17:42
【问题描述】:

在尝试删除 SQL 服务代理对象时,我遇到了这个错误

队列 'SqlDependencyStarter.SqlQueryNotificationService-e1304de0-fb30-4009-b3fb-478c34acc40a' 无法删除,因为它绑定到一项或多项服务。

但在删除队列之前,我将删除绑定到它的所有服务。

SET @sql = 'ALTER QUEUE [SqlDependencyStarter].[' + @service_queue_name + '] WITH STATUS = OFF, RETENTION = OFF, ACTIVATION (STATUS = ON, PROCEDURE_NAME = ' + @activation_procedure + ', MAX_QUEUE_READERS = 1, EXECUTE AS OWNER)';
 EXEC sp_executesql @sql
SET @sql = 'DROP SERVICE [' + @service_name + ']';
 EXEC sp_executesql @sql

然后我试图放弃队列

SET @sql = 'DROP QUEUE [SqlDependencyStarter].[' + @service_queue_name + ']';
EXEC sp_executesql @sql

【问题讨论】:

  • 尝试使用 GO 关键字分隔您的查询
  • 带有`EXEC sp_executesql @sql` 不需要单独的go

标签: sql-server service-broker sqldependency query-notifications


【解决方案1】:

您需要先删除服务,然后是队列。

【讨论】:

  • 这就是我所做的。首先我停用队列,删除它的服务,然后删除队列
【解决方案2】:

您还需要删除事件通知:

set @query = N'DROP EVENT NOTIFICATION [' + @eventName + N'] ON SERVER';

exec sp_executesql @query

【讨论】:

  • 没有任何事件通知可以随时删除。我们还没有创建任何事件通知。
猜你喜欢
  • 2010-12-06
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
相关资源
最近更新 更多