【发布时间】:2018-09-30 11:57:27
【问题描述】:
我正在从 BizTalk 服务器调用存储过程并尝试对其进行调试。
1) Use SQL Debugger when stored proc called by an external process 2)Getting sp_tracegenerateevent to work in a stored procedure
我一直使用 SQL Profiler 作为我了解正在发生的事情的唯一工具。但是现在,我怀疑我的尝试/捕获是否正常工作。代码在 SSMS 中运行时运行良好,但从 BizTalk 运行时,有时似乎 try/catch 一直在捕获。
ALTER PROCEDURE WhatItsName
@CatchErrors varchar(max) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT OFF;
DECLARE @debugMessage varchar(max) = ''
DECLARE @RowCreateBy VARCHAR (100)
SET @RowCreateBy = '108004'
BEGIN TRY
SET @RowCreateBy = '108005'
END TRY
BEGIN CATCH
SET @debugMessage = 'set @RowCreatedBy Failed - how can this be ??? '
END CATCH
etc...
根据我们在上面的分析器中看到的内容,我的 try/catch 是否按预期工作?
现在,当我从 SSMS 运行相同的存储过程时,会出现“正常”之类的情况。
BizTalk 在 DTC 事务下运行所有内容。请注意,“BEGIN TRY”和“END TRY”语句出现在 SSMS 下的第二个配置文件中(并且“BEGIN CATCH”没有触发 - 正如预期的那样),并且它们没有出现在上面的第一个配置文件中(其中 sproc从 BizTalk 执行)。
然后我在 SSMS 中的测试脚本中添加了“BEGIN DISTRIBUTED TRANSACTION”,结果与上面的其他 SSMS 测试相同。
注意:我注意到这个模式有一个更复杂的问题,并想简化它以便在此处发布。
【问题讨论】:
标签: sql-server sql-server-profiler