Je poste la solution ci-dessous ici car après quelques recherches, c'est là que j'ai atterri, donc d'autres peuvent aussi. J'essayais d'utiliser EF 6 pour appeler une procédure stockée, mais j'ai eu une erreur similaire car la procédure stockée avait un serveur lié utilisé.
L'opération n'a pas pu être effectuée car le fournisseur OLE DB _ pour le serveur lié _ n'a pas pu commencer une transaction distribuée
Le gestionnaire de transactions partenaire a désactivé sa prise en charge des transactions à distance / réseau *
Passer à SQL Client a résolu mon problème, ce qui m'a également confirmé qu'il s'agissait d'un problème EF.
Tentative basée sur la méthode générée par le modèle EF:
db.SomeStoredProcedure();
Tentative basée sur ExecuteSqlCommand:
db.Database.ExecuteSqlCommand("exec [SomeDB].[dbo].[SomeStoredProcedure]");
Avec:
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();
Ce code peut être raccourci, mais je pense que cette version est légèrement plus pratique pour le débogage et la progression.
Je ne pense pas que Sql Client soit nécessairement un choix préféré, mais j'ai estimé que cela valait au moins la peine d'être partagé si quelqu'un d'autre ayant des problèmes similaires est atterri ici par Google.
Le code ci-dessus est C #, mais le concept d'essayer de basculer vers Sql Client s'applique toujours. À tout le moins, ce sera un diagnostic d'essayer de le faire.