【ASP.net】 MSDTCは使用できません。SqlException
久々な気がしますが、元気に生きております。
プロジェクトも変わらず、
asp.net + SQL Serverの環境で頑張っております。
今回はかなり躓いたので、
忘れないように書いておきます。
途中から急に出るようになったエラー。
「MSDTCは使用できません。」
とりあえずの対処法は、
コンピュータ>右クリック>管理>
サービスとアプリケーション>サービス
として、
Distributed Transaction Cordinatorを開始すれば
エラーは起きなくなります。
ですが、そもそも原因って何?
ってことで調査してみました。
(Distributed Transaction Cordinatorは
データベースやファイルシステムなど複数の
リソースマネージャに分散さえたトランザクションを調整するもの)
何となくわかる。。。
今回のエラーは、
ソリューションをまたぐようになってから起き始めたので、
ソリューションをまたぐのが原因なのかも!
と調査を開始。
ソリューションAからBに行って
BのDBを見るところでエラーになるから。
「やっぱ、そうなんかなー」
と思っていました。
そして上司に連絡。
すると、
「たぶん使わなくてもいけるはずだから、
もうチョイ調べて!」
とのこと。
と言っても、結構調べたぞ!
と思いながら、再び調査。
何か、Distributed Transaction Cordinatorを
自動起動するようにすれば解決っぽいんだけど。
実際にコレは正しい解決策です。
ですが、今回は若干違いました。
MSDTCのエラーについて調べて行き、
ついにエラーを消す事に成功!!!
今回の原因は、
vb.netのストアド呼び出し処理時で
Using scope As Transactions.TransactionScope()
処理()
End Using
としていたから。
今回はトランザクション処理は不要なので
Using句を削除して解決♪
エラーが起きた理由としては、こういうことっぽい。
TransactionScope内で
複数の接続を開くと
分散トランザクション(MSDTC)扱いになる。
MicroSoft Distributed Transaction Cordinatorのこと。Windowsで標準インストールされてる分散トランザクション管理機能。