【发布时间】:2012-11-25 14:08:31
【问题描述】:
大家好,
我想在 SQL Server 2008 中并行执行存储过程。我不会使用任何外部工具(SSIS、CLR)。我决定采用rusanu's blog 中提到的方法并尝试使用服务代理。
现在到并行执行 - 我已将 MAX_QUEUE_READERS 设置为 5 并尝试执行几个长时间运行的程序。我注意到,他们仍然连续被执行。我会假设他们在不同的对话中,因此激活应该发生多次。 如果我假设错误,请纠正我。
感谢您的解释。
【问题讨论】:
-
也许你的“线程”因为阻塞而等待?
-
据我所知,队列有内部(NOLOCK)选项,从而防止阻塞当前处理的消息。此外,每个对话都在不同的对话组中,因此不应阻止它们。但是再一次 - 如果我错了,请纠正我
-
没错,我的意思是消息正在进行的处理。他们肯定是在对其他数据进行操作吗?
-
您的激活程序到底在做什么?您是重复使用相同的对话句柄,还是每次都从头开始生成一个新的句柄?
-
我只使用了无法处理相同数据的测试方法 - 使用 WAITFOR 模拟长时间运行的过程此外,我正在为每个对话生成新句柄。
标签: sql-server sql-server-2008 service-broker