環境:Windows Server 2003 Ent + SP2、SQL Server 2005 Ent + SP2、BizTalk Server 2006 Ent (異機部署、非網域、MSDTC 設定「不要求驗證」)。BizTalk Orchestration (長期交易) 呼叫 SQL Adapter 存取含 BEGIN TRAN 的預存程序,拋出:分散式交易已完成。請將此會話登記到新交易或 NULL 交易中 (MSSQLSERVER_8525)。
BEGIN TRAN (本地交易) → 成為巢狀交易FOR XML 回傳) → 觸發 8525BEGIN TRY
BEGIN TRANSACTION;
-- 更新/插入/刪除陳述式
COMMIT TRANSACTION;
SET @ReturnValue = '01';
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
-- 記錄錯誤資訊
SET @ReturnValue = '99';
END CATCH;
-- 統一回傳 XML
SELECT Code AS ReturnValue FROM ManifestStatus WHERE Code = @ReturnValue FOR XML AUTO, ELEMENTS;
XACT_ABORT ON 並正確處理巢狀層級