Я публикую решение ниже, потому что после некоторых поисков я приземлился именно здесь, поэтому другие могут тоже. Я пытался использовать EF 6 для вызова хранимой процедуры, но имел аналогичную ошибку, потому что хранимая процедура использовала связанный сервер .
Операция не может быть выполнена, потому что поставщик OLE DB _ для связанного сервера _ не смог начать распределенную транзакцию
Менеджер партнерских транзакций отключил поддержку удаленных / сетевых транзакций *
Переход к SQL Client устранил мою проблему, что также подтвердило для меня, что это была проблема 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 обязательно является предпочтительным выбором, но я чувствовал, что этим, по крайней мере, стоит поделиться, если кто-то еще, имеющий аналогичные проблемы, попадет сюда через Google.
Вышеупомянутый код написан на C #, но концепция попытки переключения на Sql Client по-прежнему применяется. По крайней мере, попытка сделать это будет диагностической.