Wie erstelle ich die Transaktion für eine bestimmte Verbindung nur in SQL?

Ich möchte eine Transaktion in SQL nur für eine bestimmte Verbindung erstellen. Es sollte diese Tabelle für alle Verbindungen sperren, aber anderen Verbindungen erlauben, diese Tabelle zu lesen, selbst wenn die Transaktion von einer anderen Verbindung aus gestartet wurde. Welche Isolationsstufe soll ich dafür verwenden.

Tran = CnnTran.BeginTransaction(IsolationLevel.RepeatableRead);            

Antworten auf die Frage(1)

Lösung für das Problem

Für die Auswahlabfrage können Sie entweder @ verwendeWITH (NOLOCK) oderSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED.

READ UNCOMMITTED: Gibt an, dass Anweisungen Zeilen lesen können, die von anderen Transaktionen geändert, aber noch nicht festgeschrieben wurden. Daher können SELECT-Anweisungen die Zeilen lesen, die von anderen nicht festgeschriebenen Transaktionen aktualisiert wurden. Daher muss die Isolationsstufe für die andere Verbindung festgelegt werden, für die Sie diese Tabelle lesen möchten.

Wenn Sie möchten, können Sie dies an der Verbindung einstellen:

var myConnection = new SqlConnection();

// connection for reading uncommitted transactions
myConnection.BeginTransaction(IsolationLevel.ReadUncommitted).Commit();

Oder du könntest es einfach in einer Transaktion tun, wenn du es wünschst:

using (var myConnection = new SqlConnection(connectionString)) {
    myConnection.Open();
    using (var transaction = myConnection.BeginTransaction(IsolationLevel.ReadUncommitted)) {
        // do stuff
        transaction.Commit();
    }
}
 Shell02. Sept. 2014, 12:36
Vielen Dank für Ihre Antwort: Wie kann ich es in C # -Code implementieren?
 Donal02. Sept. 2014, 12:57
Ich habe dort Code hinzugefügt. In der SQL, die Sie ausführen, können Sie auch den WITH (NOLOCK) -Hinweis verwenden. Dies entspricht IsolationLevel.ReadUncommitted
 Shell02. Sept. 2014, 12:59
Danke für das Beispiel, lass es mich versuchen.
 Shell02. Sept. 2014, 13:19
It works great ... danke Kumpel, Du hast mir gerade das Leben gerettet, sonst muss ich 3-4 Tage damit verbringen.
 Donal02. Sept. 2014, 13:20
@ Shell Kein Problem, wir helfen Ihnen gerne weiter.

Ihre Antwort auf die Frage