Frage

Wir haben einige Listen von Daten über einen SqlCommand geholt in unserer Anwendung ist eine SELECT Abfrage auf einer SQL Server-Datenbank ausgeführt wird. Wir tun nicht explizit Setup eine Transaktion auf dem SqlCommand, statt es nur eine SqlConnection vorbei und es läuft. Ist es der Fall, dass, wenn keine Transaktion angegeben, dass SQL Server einleitet und eine Standard-Transaktion mit der Standard-Isolation von ReadCommitted verwenden?

War es hilfreich?

Lösung

SQL Server kann ohne eine explizite Transaktion glücklich arbeiten. Aber ja, ich glaube, es ist im Wesentlichen schreib begangen (es sei denn natürlich, Sie zusätzliche Hinweise zu Ihrer Anfrage Objekte hinzufügen, wie UPDLOCK / NOLOCK). Sie können dies untersuchen mit:

DBCC USEROPTIONS

, die zeigt (unter anderem):

isolation level read committed

Andere Tipps

SQL erstellt eine Transaktion implizit für Ihre Aussagen, und diese Transaktion festgeschrieben wird, wenn die Anweisung abgeschlossen ist. Die Isolationsstufe der Transaktion wird die aktuelle Isolationsstufe sein, die Standardwerte ENGAGIEREN zu lesen. Bestimmte Anweisungen überschreiben, die aktuelle Isolationsstufe und durchzusetzen READ ENGAGEMENT (z. RECEIVE).

Wenn Ihr SqlCommand eine Batch ausführt (weitere Anweisungen) dann jede Aussage, dass der Zugang Tabellen wird eine eigene Transaktion erstellen.

Der Standard autocommit von Transaktionen durch Änderung der SET IMPLICIT_TRANSACTION gesteuert wird ON.

Siehe Controlling Transaktionen für mehr Details .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top