【问题标题】:How can I debug a stored procedure running from a Service Broker queue in SQL Server 2008?如何调试从 SQL Server 2008 中的 Service Broker 队列运行的存储过程?
【发布时间】:2011-10-09 15:44:04
【问题描述】:

我有一个带有复杂触发器的表,该触发器最终调用 Service Broker 以运行带有参数的存储过程,该参数是表(自定义类型)。

我可以“步入”INSERT 和触发器,但我不能步入服务代理存储过程,因为据我所知,它是异步运行的。

有什么方法可以利用 Service Broker 运行的存储过程并对其进行调试?

谢谢。

【问题讨论】:

    标签: sql-server-2008 debugging service-broker


    【解决方案1】:

    要调试它(使用管理工作室调试器),您可以更改队列以关闭激活。

    ALTER QUEUE queue_name 
    WITH ACTIVATION (STATUS = OFF); 
    

    运行插入语句,然后手动运行和调试激活过程,就像使用任何存储过程一样。 这样在调试时队列中就会有一些东西。 然后在完成后使用STATUS = ON 恢复激活。

    【讨论】:

    • 如果错误仅在服务代理运行时发生,则此方法不起作用。我现在遇到一个问题,运行 proc 本身可以工作,但是当 SB 运行它时会失败。似乎 SB 在 Web 请求期间终止了连接。
    • 好点,但这应该是一个单独的问题。我会先检查用户权限,SB 激活有一个 EXECUTE AS 子句。玩得开心:)
    • 谢谢,我的问题原来是由最大文本大小设置为 4K 引起的。我用 set sextsize -1 解决了它。花了我 2 天时间。
    【解决方案2】:

    我知道这是旧的,但也许其他人有这个问题。

    您可以使用 SQL Profiler 捕获发生错误的行号和进程。如果您使用 Print 语句,那么它们将显示在分析器中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多