2 つのサーバーにデータベースの 2 つのインスタンスがあります。最初のインスタンスにデータを挿入し、2 番目のインスタンスでデータを更新するアプリケーションを作成したいと考えています。これらのプロセスのいずれかが失敗した場合は、すべての操作をロールバックしたいと考えています。
データベース サーバーは DTC/MSDTC を有効にしません。トランザクションスコープを使うのにうんざりしましたが、うまくいきませんでした。どうすればこれを行うことができますか?
2 つのサーバーにデータベースの 2 つのインスタンスがあります。最初のインスタンスにデータを挿入し、2 番目のインスタンスでデータを更新するアプリケーションを作成したいと考えています。これらのプロセスのいずれかが失敗した場合は、すべての操作をロールバックしたいと考えています。
データベース サーバーは DTC/MSDTC を有効にしません。トランザクションスコープを使うのにうんざりしましたが、うまくいきませんでした。どうすればこれを行うことができますか?
これらのプロセスのいずれかが失敗した場合、すべての操作をロールバックしたい
分散トランザクションについて説明しています。分散トランザクションを使用するには、トランザクション コーディネーターが必要です。ケーキを持って食べることはできません。
変更の非同期適用を検討する場合、代替手段があります。複製。これにより、分散トランザクションの要件がなくなりますが、変更は最初のサーバーでコミットされた後、2 番目のサーバーに非同期的に適用されます。
1 つのオプションは、補正コードをアプリケーションに入れることです。たとえば、アプリケーションが C# ベースの場合、try...catch ブロックを使用できます。catch ブロックでは、補正コードを追加して、最初のサーバーのデータに加えた変更を「元に戻す」ことができます。
ただし、最善の方法はもちろん、DTC を有効にするよう DBA に説明することです。