以下の解決策をここに投稿します。いくつか検索した後、これが私が着陸した場所であるため、他の解決策もそうかもしれません。EF 6を使用してストアドプロシージャを呼び出そうとしましたが、ストアドプロシージャにリンクサーバーが使用されていたため、同様のエラーが発生しました。
リンクサーバーのOLEDBプロバイダー_が分散トランザクションを開始できなかったため、操作を実行できませんでした
パートナートランザクションマネージャーは、リモート/ネットワークトランザクションのサポートを無効にしました*
SQLクライアントにジャンプすると、問題が修正されました。これにより、EFの問題であることが確認されました。
EFモデルで生成されたメソッドベースの試行:
db.SomeStoredProcedure();
ExecuteSqlCommandベースの試行:
db.Database.ExecuteSqlCommand("exec [SomeDB].[dbo].[SomeStoredProcedure]");
と:
var connectionString = db.Database.Connection.ConnectionString;
var connection = new System.Data.SqlClient.SqlConnection(connectionString);
var cmd = connection.CreateCommand();
cmd.CommandText = "exec [SomeDB].[dbo].[SomeStoredProcedure]";
connection.Open();
var result = cmd.ExecuteNonQuery();
そのコードは短くすることができますが、バージョンはデバッグとステップスルーに少し便利だと思います。
SQLクライアントが必ずしも好ましい選択であるとは思いませんが、同様の問題を抱えている他の誰かがグーグルによってここに上陸した場合、これは少なくとも共有する価値があると感じました。
上記のコードはC#ですが、SQLクライアントに切り替えようとする概念は引き続き適用されます。少なくとも、そうしようとすると診断になります。