TransactionScope (MSDTC) 使用時のエラー対策

TransactionScope を使っていると、開発マシンでは正常に動作するのに、本番機など別マシンでは TransactionManagerCommunicationException が発生することがあります。これは、 DB サーバが別マシンにある場合、分散トランザクションの設定が必要なことから発生します。設定は、以下の手順を実行してください。

  1. 「ファイル名を指定して実行」から「dcomcnfg」
  2. 「Component Services」-「マイコンピュータ」-右クリック「プロパティ」
  3. 「MSDTC」タブ-「トランザクションの構成」-「セキュリティの構成」
  4. 以下の図にように「ネットワーク DTC アクセス」などの設定を変更
MSDTC の設定

注意点としては、実行ファイルがあるマシンと DB マシンの両方で dcomcnfg を起動して設定する必要があると言うことです。より詳しい内容は、 Microsoft KB を参照してください。 *1

*1:各マシンの認証の設定や使用している MSDTC の機能によって必要な設定が異なります。最初はフルアクセスで疎通確認を行い、徐々にきつめにしていくのもいいと思います。ただし、フルアクセスで試した場合は、そのままにせずきっちり設定しましょう。多くの環境では「認証を必要としない」にした方がいいかもしれません。