FAQ なネタですが。
TransactionScope (System.Transactions 名前空間) を使う時には、MSDTC (Distributed Transaction Coordinator) を起動しておきましょう。
管理ツールのサービスを起動して開始します。
なんなら自動起動にしてしまいましょう。
こいつがデフォルトで停止になっています。
それを忘れて、トランザクションでSqlExceptionが出た時しばらく悩みました。
(例外のメッセージをちゃんと読みましょう>自分)
とはいえ、これだけのために DTC なんてのを動かしておきたくないということもありそう。
そもそもその辺の理由でデフォルトでDTCがオフになってるんでしょうし。
そういう場合はやっぱり SqlTransaction を使うことになるんでしょうね。
MSさん的には TransactionScope を推奨しています。
それに TableAdapter を使うときには(たいてい使うんでしょうけど)、TransactionScope はトランザクション周りのコードを減らせて便利だし、ささっとコーディングをすまそうと思うと他の手が見つからないのも事実。
とはいえ、そうも行かない時もありそうだし、ちょっと実験してみます(今日はやらない /w)。
新しいマシンを調達したのでアプリやら開発ツールやらのインストールが終わって、さて開発。
・・・で、このトラブルを自ら招きました。