Inserisco la soluzione di seguito qui perché dopo alcune ricerche è qui che sono atterrato, quindi anche altri potrebbero. Stavo cercando di utilizzare EF 6 per chiamare una stored procedure, ma si è verificato un errore simile perché la stored procedure aveva un server collegato in uso.
Impossibile eseguire l'operazione perché il provider OLE DB _ per il server collegato _ non è stato in grado di avviare una transazione distribuita
Il gestore delle transazioni partner ha disabilitato il supporto per le transazioni remote / di rete *
Il passaggio a SQL Client ha risolto il mio problema, il che mi ha anche confermato che si trattava di una cosa EF.
Tentativo basato sul metodo generato dal modello EF:
db.SomeStoredProcedure();
Tentativo basato su ExecuteSqlCommand:
db.Database.ExecuteSqlCommand("exec [SomeDB].[dbo].[SomeStoredProcedure]");
Con:
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();
Quel codice può essere abbreviato, ma penso che quella versione sia leggermente più conveniente per il debug e il passaggio.
Non credo che Sql Client sia necessariamente una scelta preferita, ma ho ritenuto che valesse la pena condividerlo se qualcun altro con problemi simili viene atterrato qui da Google.
Il codice sopra è C #, ma il concetto di provare a passare a Sql Client è ancora valido. Per lo meno sarà diagnostico tentare di farlo.