Ich habe eine lange laufende Transaktion (z. B. T1), die einige Löschvorgänge, Aktualisierungen und Einfügungen für eine Tabelle in SQL Server 2008 R2 ausführt. Gleichzeitig führt ein anderer Prozess regelmäßig ausgewählte Anweisungen aus dieser Tabelle aus.
Unter den Standardeinstellungen für die Isolation (READ COMMITTED, glaube ich?) Blockiert T1 die Ausführung von Select-Anweisungen, bis die Transaktion festgeschrieben oder zurückgesetzt wird.
Was ich sehen möchte, ist, dass die select-Anweisungen auch während der Transaktion mit konsistenten Daten funktionieren. Ich glaube, dass SNAPSHOT-Isolation helfen kann, bin mir aber nicht sicher, ob ich in die richtige Richtung gehe. Wäre dies die beste Isolationsstufe für diese Anwendung?
Zweitens habe ich keine Kontrolle über den Prozess, der die select-Anweisungen aufruft, aber ich habe Kontrolle über die .NET-Anwendung, die T1 aufruft. Wären Änderungen an der Isolationsstufe sowohl für die select-Anweisungen als auch für T1 erforderlich, oder würde es ausreichen, nur T1 als mit einer anderen Isolationsstufe zu markieren?