sql-server - sql查询通知服务问题

标签 sql-server sql-server-2008-r2

我们的数据库遇到超时问题。因此,我打开 SQL Server Profiler,看到 SQLQueryNotificationService 每秒运行一次,持续时间很长。我检查了 Service Broker,发现创建了一堆 SQLQueryNotificationService 队列。我认为我们没有创建任何这些队列,而且还有一堆存储过程,例如 SqlQueryNotificationStoredProcedure-15c5b84b-42b0-4cfb-9707-9b1697f44127。你能告诉我如何删除它们吗?如果我删除它们会对数据库产生任何影响吗?请告诉我。我很感激任何建议。

最佳答案

您是否正在运行 ASP.Net 网站或其他创建 Sql Server Cache 依赖项的应用程序?它是 Sql Server Service Broker 队列,它执行 WAITFOR ... 语句,该语句等待大约一分钟(60000 毫秒),然后下一秒再次执行。通常不会引起问题,它不应该阻止或延迟您的“正常”查询或存储过程。

但是,我曾经看到它给我带来了问题 - 当从建立缓存依赖关系的同一 Web 应用程序执行其中一个存储过程时,它超时了(或者更确切地说,在 120 秒内返回,这是 Not Acceptable )。完全相同的存储过程,在同一帐户下使用相同的参数执行,但来自 Management Studio,运行良好,没有任何问题。它是 SQL Server 2005 SP4。

SQL Profiler 显示,在我的存储过程执行过程中(并且总是在相同的 INSERT INTO ... 语句之后),它的执行被中断,而不是它的语句,而是来自 Sql 的 WAIT FOR ....查询通知,在一分钟内完成,然后另一个等待...开始并再次,在 59 秒内完成 - 只有在那之后,探查器才向我显示我的存储过程已完成。时长为119000,几乎正好是两分钟。

如果查询通知正在加入我的存储过程中的事务。

有什么帮助:重新编译了有问题的存储过程。我只是更改了它的脚本,对 ALTER 语句进行了一些小的语法更改。之后就没问题了。

关于sql-server - sql查询通知服务问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15234141/

相关文章:

python - 从类中的 sql 填充输入框

sql - 无法将一个或多个字符从 XML 转换为目标排序规则

stored-procedures - 存储过程未在 Crystal 报表中显示字段

sql - 如何在SQL中查找某些列上的相似数据

sql - 如何为 SQL Server 重写此 MS Access 表达式

使用存储过程进行具有唯一约束的 SQL 插入

ssis - 从脚本任务执行 SSIS 包存储中的子包

sql-server - 如何连接到一张表并回退到另一张表?

SQL Server 2012 如何判断表A中的所有值是否在表B中

mysql - 对另一个字段的不同值进行分组求和