1つのデータベースからデータを読み込み、2つの他のデータベース(Db2とDb3)にデータを挿入/更新する必要があります。すべてのデータベースはSQL Serverです。ADO.NETと別のデータベースで作業する
オープンな接続をして、私のソースDBのトランザクションを開始します。
は今、私は次のシナリオを使用しています。
1.1 Db2のオープントランザクションと開始トランザクション
1.2レコードの挿入/更新。
1.3
は/ロールバック・トランザクションに2.1オープンな接続をコミットし、Db3は
2.2挿入/更新レコードのトランザクションを開始します。ソースDBにエクスポートしたよう
2.3 /ロールバックトランザクション
マークレコードをコミットします。
トランザクションをコミットします。
すべて正常です。しかし、1.2または2.2ステップで例外が発生した場合、現在のトランザクションはロールバックされますが、他のステップからのトランザクションはコミットされたままになります。
ステップ(1.2または2.2)に例外がある場合、ステップ1.3および2.3 もロールバックされるシナリオをどのように実装できますか?
私は例外
トランザクションが現在の接続 に関連付けられていないしているいずれか、または完了しているので、私はDB2とDb3はのための1つのトランザクションを使用することはできません。
おかげで、
UPDATE: は今、私は次のシナリオを使用しています: は、私は私の問題解決
オープンな接続をして、私のソースDBのトランザクションを開始します。
1.1接続をオープンし、コミットDB2
に挿入/更新DB1に1.3に
1.5を
1.4を挿入/更新を
1.2にDb1と
オープン接続をトランザクションを開始し、DB2のためのトランザクションを開始/ Db1のロールバックトランザクション1。6 Db2のコミット/ロールバックトランザクション
ソースレコードをエクスポート元dbにエクスポートします。
トランザクションをコミットします。
がどのようにDb1との取引が成功し、DB2トランザクション・故障時に扱うんですか? – Eranga