Wie lauten die Scoping-Regeln für Transaktionsisolierungsebenen in SQL Server 2005? Ich weiß, was die verschiedenen Ebenen bedeuten, aber nicht, wie man sie außerhalb eines manuell ausgeführten Skripts richtig anwendet. Ich kann keinen Leitfaden für den praktischen Einsatz in produktionsfähigem Code finden.
Offensichtlich beginnt der Geltungsbereich, wenn Sie einen Befehl wie diesen verwenden:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Aber wo endet sie? Wenn ich die Iso-Stufe in einer gespeicherten Prozedur einstelle und diese Prozedur dann eine andere aufruft, erbt die verschachtelte Prozedur sie dann? Oder noch besser: Wenn ich die Iso-Ebene innerhalb der verschachtelten Prozedur erhöhe, wird sie dann in die aufrufende Prozedur zurückgeführt? Machen Transaktionsbefehle wie BEGIN TRAN, ROLLBACK und COMMIT einen Unterschied?
Bleiben die Änderungen der Isolationsebene auf irgendeine Weise erhalten, wenn ein gespeicherter Prozess von einer Anwendung oder einem Agentenauftrag aufgerufen wird? Muss ich am Ende jedes Prozesses immer zum Standardwert READ COMMITTED zurückkehren?
Ich würde es in verschiedenen Situationen testen, aber ich weiß nicht, wie ich den aktuellen Isolationsgrad ablesen kann.