我有一個SQL Server 2008 R2存儲過程,它在TRANSACTION中運行一些INSERT和UPDATE。在每個陳述之後,我需要記錄剛纔發生的事情,然後再進行下一步。如何記錄事務中的事件
這裏是我的代碼:
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO... -- 1st statement
INSERT INTO MyEventLog (EventDescription) VALUES ('Did Step 1') -- log
UPDATE... -- 2nd statement
INSERT INTO MyEventLog (EventDescription) VALUES ('Did Step 2') -- log
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF (@@TRANCOUNT<>0) ROLLBACK TRANSACTION
EXEC LogError 'I got an error'
END CATCH
問題是:如果有錯誤,事務回滾所有語句 - 包括我所需要的記錄。如果發生錯誤,如何回滾事務但保留日誌記錄。
如何?請更新我的代碼示例以顯示您的意思。訂單需要保持不變,非登錄語句需要在TRANS中。 –