Ich poste die folgende Lösung hier, weil ich nach einigem Suchen hier gelandet bin, also vielleicht auch andere. Ich habe versucht, mit EF 6 eine gespeicherte Prozedur aufzurufen, hatte jedoch einen ähnlichen Fehler, da für die gespeicherte Prozedur ein Verbindungsserver verwendet wurde.
Der Vorgang konnte nicht ausgeführt werden, da der OLE DB-Anbieter _ für den Verbindungsserver _ eine verteilte Transaktion nicht starten konnte
Der Partner-Transaktionsmanager hat die Unterstützung für Remote- / Netzwerktransaktionen deaktiviert *
Das Wechseln zu SQL Client hat mein Problem behoben, was mir auch bestätigte, dass es sich um eine EF-Sache handelt.
Vom EF-Modell generierter methodenbasierter Versuch:
db.SomeStoredProcedure();
ExecuteSqlCommand-basierter Versuch:
db.Database.ExecuteSqlCommand("exec [SomeDB].[dbo].[SomeStoredProcedure]");
Mit:
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();
Dieser Code kann gekürzt werden, aber ich denke, dass die Version etwas bequemer zum Debuggen und Durchgehen ist.
Ich glaube nicht, dass SQL Client unbedingt eine bevorzugte Wahl ist, aber ich fand, dass es sich zumindest lohnt, dies zu teilen, wenn jemand, der ähnliche Probleme hat, hier von Google gelandet wird.
Der obige Code ist C #, aber das Konzept des Versuchs, auf SQL Client umzuschalten, gilt weiterhin. Zumindest wird es diagnostisch sein, dies zu versuchen.