1

複数のデータベース (SQL Server 2008 および Oracle 11g) を更新するアプリケーションに取り組んでいます。TransactionScope は、更新が常に正しくコミットされるようにするための論理的な方法のように思えましたが、MSDTC をインストールするという選択肢はないようです。将来的には、このアプリケーションが分散トランザクションをサポートしないデータ ソースを使用する可能性もあります。

別の解決策を考え出すために何時間も費やしましたが、うまくいくようには思えません。すべての検索は、TransactionScope と分散トランザクションを指します。

アプリケーションは、Entity Framework を使用して C# で記述されています。分散トランザクションにエスカレートする必要のない提案はありますか? これは、どこにも行かなかった私が持っていたアイデアのリストです。

+TransactionScope: MSDTC を使用できません。将来のデータ ソースは、分散トランザクションをサポートしない可能性があります。

+トランザクションを手動で追跡してロールバックする: Entity Framework 内でこれを行う良い方法が見つかりませんでした。

+別のプロセスで再コミットできるようにキュー/ログの失敗: 失敗したコミットを一般的に保存する良い方法が思いつきません。また、再コミットによって新しいデータが上書きされないようにする必要があります。

4

1 に答える 1

0

@シンクジェット。その関連リンクは興味深い意見です。私の場合、説明されているような小さな失敗は大したことではありません。現在、これらすべてのシステムの同期を維持しようとする他の手段があります (常に成功するとは限りません)。1 つまたは 2 つのトランザクションが失敗した場合は、これらのプロセスによって取り上げられる必要があります。

これらのコメントを読んだ後、このライブラリに独自のデータベースにデータを書き込もうとするかもしれません。次に、それらの変更を他のソースに同期して、他のアプリケーションが変更を確認できるようにします。一部の更新でわずかな遅延が発生する可能性がありますが、それでも現在のものよりはましです。

于 2013-10-07T14:48:31.097 に答える