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