我已使用TRY CATCH
创建了存储过程。在CATCH
部分,我正在执行另一个存储过程以在表Error_Details
中存储错误。
现在在C#中,我使用DbTransaction
提交和回滚取决于错误。
问题是,虽然回滚更改表Error_Details
也会回滚。
是否有任何选项可以回滚所有内容而不是Error_Details
表?
答案 0 :(得分:0)
使用存储过程本身内的事务。 请参阅下面的一个示例。
BEGIN TRY
BEGIN TRANSACTION MyActivity
-- Your SQL COMMANDS
COMMIT TRANSACTION MyActivity
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
BEGIN
ROLLBACK TRANSACTION MyActivity
END
INSERT INTO ERROR_DETAILS --INSERTING ErrorInfo INTO LOG TABLE
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage
END CATCH