トランザクションに入れたい2つのlinq 2 SQLステートメントがあります(SQLサーバーはリモート、ファイアウォールの外側など)他のすべての通信は機能しますが、これら2つのステートメントをTransactionScope()でラップすると、MSDTCを構成する必要が生じ始めますやったのですが、ファイアウォールの問題があります (私が思うに) もっと簡単な方法はありますか?
私がやりたいことの基本はこれに要約されます:(両方ともフードの下に格納されたプロシージャです)
using (var transactionScope = new TransactionScope())
{
Repository.DataContext.SubmitChanges();
Repository.DataContext.spDoFinalStuff(tempID, ref finalId);
transactionScope.Complete();
}
これを達成する最も簡単な方法は何ですか?
編集:
最初にこれを取得しました: トランザクション マネージャーは、リモート/ネットワーク トランザクションのサポートを無効にしました。(HRESULT からの例外: 0x8004D024) 私たちのサーバーでは、こちらの指示に従ってこれを修正しました。ただし、手順はWindows 7(私の開発ボックス)には適用されないようです。上記の回答に関する私のコメントを参照してください。
問題を修正した後(非win7ボックスで)、次のようになります:トランザクションはすでに暗黙的または明示的にコミットまたは中止されています(HRESULTからの例外:0x8004D00E)これは、一部のグーグルが示唆したファイアウォールの問題である可能性があります。
EDIT
リモートDBがSQL 2000であることを発見しました