2
上の分散トランザクション

ディアーズ、LightSwitchの:Azureの

私は、このような場合、エラーこと、私はLightSwitchの固有のデータベースに更新を実行し、すべて1つのトランザクションで保存するパイプラインのいくつかのSQLストアドプロシージャを呼び出す必要がシナリオを、持っていますLSの保存パイプラインで発生した場合、私のストアドプロシージャコールはロールバックされます。

これを実行するには、SaveChanges_Executingイベントでアンビエントトランザクションを設定し、SaveChanges_ExecutedイベントとSaveChanges_ExecuteFailedイベントで処理することをお勧めします。この記事

http://www.codemag.com/Article/1103071で説明した。しかし、この2つの致命的な問題があるとして:分散トランザクションがサポートされていないので、私はAzureの上でアプリを公開する際

  1. それは動作しません。
  2. また、ServerApplicationContextを使用してApplicationDataソースへの変更を保存しようとすると、エラーがスローされます。このエラーは次のとおりです。EnlistTransactionで基になるプロバイダが失敗しました

AzureとServerApplicationContextの両方で動作するLightSwitchでトランザクションを処理する、よりクリーンな方法を見つけた人は誰ですか?

ありがとうございました

答えて

2

現在、MSDTCを使用した分散トランザクションはSQL Azureに対して機能しません。ただし、Azureで実行されているVMではSQL Serverに対してうまく動作します。 MSDTCは一般にドメインコントローラ上で動作することに縛られており、パブリッククラウドのコンテキストでは意味がありません。代わりのDTCが必要になる可能性がありますが、これは今日の時点で公表されているものではありません。

私はLightswitchがここでの主な問題ではないと思いますが(おそらくそれは私が記述したものを超えていくつかの追加の問題があります)。

今日はなぜそれがうまくいかないのか、少なくとも私が願っています。私はあなたのためにより良い答えを得たいと思っていますが、今は不可能です。使用されている「回避策」は、各側で起こっているコミットに弾力性を持たせたり、失敗したケースから回復したりできるアプリケーションを構築することです。

関連する問題