我有一个复杂触发器的表,最终调用Service Broker以表(自定义类型)的参数运行存储过程。如何调试从SQL Server 2008中的Service Broker队列运行的存储过程?
我可以“进入”INSERT和触发器,但我无法进入服务代理存储过程,因为它按照我的理解运行异步。
有没有什么办法可以进入Service Broker运行和调试的存储过程?
谢谢。
我有一个复杂触发器的表,最终调用Service Broker以表(自定义类型)的参数运行存储过程。如何调试从SQL Server 2008中的Service Broker队列运行的存储过程?
我可以“进入”INSERT和触发器,但我无法进入服务代理存储过程,因为它按照我的理解运行异步。
有没有什么办法可以进入Service Broker运行和调试的存储过程?
谢谢。
要调试它(使用management studio调试器),您可以更改队列以设置激活关闭。
ALTER QUEUE queue_name
WITH ACTIVATION (STATUS = OFF);
运行插入语句然后运行&调试激活过程手动就像你使用任何存储过程。 通过这种方式,当您调试时,队列中会有东西。 然后当完成使用STATUS = ON
恢复激活。
我知道这是旧的,但也许别人有这个问题。
您可以使用SQL事件探查器捕捉行号和proc发生错误的位置。如果您使用打印语句,那么它们将显示在探查器中。
如果错误只发生在服务代理运行时,这不起作用。我现在遇到了一个问题,运行proc本身的作品,但运行时却失败了。似乎SB在网络请求期间正在终止连接。 –
好点,但这应该是一个单独的问题。我会首先检查用户权限,SB激活有一个EXECUTE AS子句。玩得开心:) –
谢谢,我的问题原来是由最大文本大小设置为4K引起的。我用set sextsize -1解决了它。花了我2天。 –