私は、これはその、本当にトランザクションがコミットされる前に起こっ誤りがあることを言っていることであるグーグルの後に見つけた何私のSPが私に有用なエラーメッセージを表示しないのはなぜですか?
"db_ErrorCode Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0."
私は非常に一般的なエラーを返すSQL Serverのストアドプロシージャを持っています。
BEGIN TRY
BEGIN TRANSACTION
SPの開始時に
、および
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
SELECT @ErrorNumber = ERROR_NUMBER(),
@ErrorLine = ERROR_LINE(),
@ErrorMessage = ERROR_MESSAGE()
RAISERROR (@Flag, 18, 120);
END CATCH
END
問題があるがありますが、これらの行の間のコードの約1100行をだし、ということである問題がある場合は、 SP全体をロールバックする必要があるため、try/catch文を間に置くことはできません。そして、なぜ私の最終的なCatchブロックが実際のエラーを返さないのですか?
「set XACT_ABORT ON」をspの先頭に追加してみてください。これはTransaction Countエラーを取り除き、実際のエラーを表示する必要があります。 –
BEGIN TRYとBEGIN TRANSACTIONの前に、グローバルと一緒に? –
はい、グローバルを使用しています。 –