Publico la siguiente solución aquí porque después de algunas búsquedas, aquí es donde aterricé, por lo que otros también pueden hacerlo. Estaba tratando de usar EF 6 para llamar a un procedimiento almacenado, pero tuve un error similar porque el procedimiento almacenado tenía un servidor vinculado .
La operación no se pudo realizar porque el proveedor OLE DB _ para el servidor vinculado _ no pudo comenzar una transacción distribuida
El administrador de transacciones del socio ha desactivado su soporte para transacciones remotas / de red *
Saltar al cliente SQL solucionó mi problema, lo que también me confirmó que era una cosa de EF.
Intento basado en el método generado por el modelo EF:
db.SomeStoredProcedure();
Intento basado en 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();
Ese código se puede acortar, pero creo que la versión es un poco más conveniente para depurar y avanzar.
No creo que Sql Client sea necesariamente una opción preferida, pero sentí que al menos valía la pena compartir esto si alguien más que tiene problemas similares llega aquí por Google.
El código anterior es C #, pero el concepto de intentar cambiar a Sql Client aún se aplica. Por lo menos, será diagnóstico intentar hacerlo.