0

2 つのサーバーにデータベースの 2 つのインスタンスがあります。最初のインスタンスにデータを挿入し、2 番目のインスタンスでデータを更新するアプリケーションを作成したいと考えています。これらのプロセスのいずれかが失敗した場合は、すべての操作をロールバックしたいと考えています。

データベース サーバーは DTC/MSDTC を有効にしません。トランザクションスコープを使うのにうんざりしましたが、うまくいきませんでした。どうすればこれを行うことができますか?

4

2 に答える 2

2

これらのプロセスのいずれかが失敗した場合、すべての操作をロールバックしたい

分散トランザクションについて説明しています。分散トランザクションを使用するには、トランザクション コーディネーターが必要です。ケーキを持って食べることはできません。

変更の非同期適用を検討する場合、代替手段があります。複製。これにより、分散トランザクションの要件がなくなりますが、変更は最初のサーバーでコミットされた後、2 番目のサーバーに非同期的に適用されます。

于 2012-09-24T10:40:46.840 に答える
0

1 つのオプションは、補正コードをアプリケーションに入れることです。たとえば、アプリケーションが C# ベースの場合、try...catch ブロックを使用できます。catch ブロックでは、補正コードを追加して、最初のサーバーのデータに加えた変更を「元に戻す」ことができます。

ただし、最善の方法はもちろん、DTC を有効にするよう DBA に説明することです。

于 2012-09-24T12:08:33.417 に答える