私は、4 つの異なるプロセス (ストアド プロシージャ) を実行する必要がある Windows アプリケーション (WinForms) に取り組んでいます。これには、4 つのプロセスのいずれかがエラーを発生させたインスタンスでプロセス全体をコミットまたはロールバックする機能が含まれます。以下に私の状況を説明します (私は DBA ではないので、SQL について無知であることをお許しください)。
Windows アプリ: [プロセス] ボタンをクリックします
データベース:開始手順 1 (およびおそらく BEGIN TRANSACTION MyProcessTransaction )
Windows アプリ: [プロセス] ボタンをクリックします
データベース:開始手順 1 (およびおそらく BEGIN TRANSACTION MyProcessTransaction )
Windows アプリ:手順 1 が正常に完了したという通知を受け取り、進行状況バーを更新します。
データベース:手順 2 を開始します (そして、どういうわけかMyProcessTransactionの下にまだカプセル化されています)
Windows アプリ:手順 2 から正常に完了したという通知を受け取り、進行状況バーを更新します。
- データベース:手順 3 を開始し (何らかの形でMyProcessTransactionの下にまだカプセル化されています)、エラーを発生させ、トランザクションMyProcessTransactionをロールバックします。
これは可能ですか?4 つのクエリ ウィンドウを試し、最初のウィンドウでトランザクションを開始してから、他のウィンドウに try catch を配置し、これをシミュレートするためにそれぞれで作業を実行しようとしましたが、4 つ目のウィンドウに到達して意図的にエラーを発生させたときに、例外を受け取りました。 ROLLBACKできるBEGIN TRANSACTIONはありませんでした。助言がありますか?