"Der Vorgang ist für den Status der Transaktion nicht gültig" Fehler und Transaktionsbereich
Ich erhalte die folgende Fehlermeldung, wenn ich versuche, rufen Sie eine gespeicherte Prozedur, die eine SELECT-Anweisung enthält:
Die operation ist nicht gültig für den Status der Transaktion
Hier ist die Struktur meiner Anrufe:
public void MyAddUpdateMethod()
{
using (TransactionScope Scope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
using(SQLServer Sql = new SQLServer(this.m_connstring))
{
//do my first add update statement
//do my call to the select statement sp
bool DoesRecordExist = this.SelectStatementCall(id)
}
}
}
public bool SelectStatementCall(System.Guid id)
{
using(SQLServer Sql = new SQLServer(this.m_connstring)) //breaks on this line
{
//create parameters
//
}
}
Ist das problem bei mir dadurch eine weitere Verbindung zur selben Datenbank innerhalb der Transaktion?
InformationsquelleAutor der Frage Michael Kniskern | 2008-10-10
Du musst angemeldet sein, um einen Kommentar abzugeben.

Nachdem ich einige der Forschung, es scheint ich kann nicht zwei verbindungen geöffnet werden, um die gleiche Datenbank mit der TransactionScope-block. Ich brauchte, um zu ändern mein code wie folgt Aussehen:
InformationsquelleAutor der Antwort Michael Kniskern
Komme ich auch über das gleiche problem, habe ich geändert Transaktion-timeout auf 15 Minuten und es funktioniert.
Ich hoffe, das hilft.
InformationsquelleAutor der Antwort Sharique
Wenn ich auf diese Ausnahme gab es eine InnerException "Transaction Timeout". Da dies während einer debug-Sitzung, wenn ich angehalten mein code für einige Zeit im inneren des TransactionScope, habe ich mich entschieden, Sie zu ignorieren dieses Problem.
Wenn dieses bestimmte Ausnahme mit einem timeout erscheint in der verwendeten code, ich denke, dass der folgende Abschnitt in Sie .config-Datei wird Ihnen helfen, aus:
InformationsquelleAutor der Antwort R. Schreurs
Habe ich festgestellt, dieser Fehler, wenn meine Transaktion ist Ineinander geschachtelt. Ist es möglich, dass die gespeicherte Prozedur deklariert eine eigene Transaktion, oder, dass die aufrufende Funktion deklariert?
InformationsquelleAutor der Antwort Wyatt
Für mich, dieser Fehler kam, als ich versuchte rollback einer Transaktion block nach der Begegnung mit einer Ausnahme, innerhalb einer anderen Transaktion blockiert.
Alle die ich tun musste, um es zu beheben war, zu entfernen, meine innere Transaktion blockieren.
Dinge bekommen kann ziemlich chaotisch bei der Verwendung von geschachtelten Transaktionen, besten, dies zu vermeiden und einfach strukturieren Sie Ihre code.
InformationsquelleAutor der Antwort Vishav Premlall