Transaction Isolation Level Bereiche
Was sind die scoping-Regeln für transaction isolation levels in SQL Server 2005? Ich weiß, was die verschiedenen Ebenen bedeuten, aber nicht, wie man richtig anwenden, wenn Sie außerhalb einer manuell Skript ausführen. Ich kann nicht finden, ein Leitfaden für den praktischen Einsatz in der Produktion-Qualität-code.
Offensichtlich, der Rahmen beginnt, wenn Sie einen Befehl wie diesen verwenden:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Aber wo wird es enden? Wenn ich den iso-Wert in einer gespeicherten Prozedur, und dann, proc ruft eine andere, nicht die verschachtelten proc-Erben? Noch besser ist, wenn ich eskalieren Sie den iso-Wert innerhalb der verschachtelten proc ist es zu tragen, zurück in die aufrufende proc? Tun transaction-Befehle wie BEGIN TRAN, ROLLBACK und COMMIT machen die irgendwelche Unterschiede?
Wenn eine gespeicherte Prozedur aufgerufen wird, die durch eine Anwendung oder ein agent job tun, die die Isolationsstufe Veränderungen bestehen in irgendeiner Weise? Muss ich immer wieder den Standard LESEN Sie VERPFLICHTET, am Ende jedes proc?
Ich würde es testen, in verschiedenen Situationen, aber ich weiß nicht, wie zu Lesen, was die aktuelle Isolationsstufe festgelegt ist.
- Die Tatsache, dass der Umfang dieses geht über die aktuelle Transaktion (und, wegen connection pooling, über die aktuelle "session") können Sie brennen. Siehe diesem post die ich zu dem Thema geschrieben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Führen Sie die folgenden Schritte aus und sehen Sie selbst:
Vom MSDN
DBCC USEROPTIONS
zeigt die aktuelle Isolationsstufe, zusammen mit all den anderen Optionen EINSTELLEN.Aus Büchern auf Linie
Isolationsstufe keinen Rollback mit der Transaktion.
Isolationsstufe bleibt der Strom auch wenn Sie call-in-Prozeduren und-Funktionen.
Bitte beachten Sie, es gibt ein Problem mit dem Umfang der TRANSAKTION EBENEN und SQL Server 2012 oder früher, wenn hohe Leistung ADO.NET Connection-Pooling verwendet wird, wo diese kann tatsächlich bestehen über die Verbindung geschlossen:
SQL Server: Isolation Leckagen über gepoolte connections
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/916b3d8a-c464-4ad5-8901-6f845a2a3447/sql-server-2014-reseting-isolation-level?forum=sqldatabaseengine