SQL Server: Anweisungen vs. Stapel vs. Transaktionen vs. Verbindungen

10

Meine Frage ist einfach: Was sind die Unterschiede / Ähnlichkeiten / Kardinalitäten zwischen

  • Transaktionen
  • Chargen
  • Anschlüsse und
  • Aussagen

in SQL Server?

Soweit ich weiß, ist eine Verbindung ein einzelner Kommunikationskanal zwischen einer SQL Server-Instanz und einem Client, in dem Sammlungen von Anweisungen ausgeführt werden, die als Stapel gruppiert sind. Ein Stapel wird entweder implizit oder explizit einer oder mehreren Transaktionen zugeordnet. Ist das richtig?



quelle

Antworten:

4

Ja schon.

Ein Stapel ist genau das, ein Stapel von Befehlen, die ausgeführt werden müssen. Eine Transaktion ist eine Reihe von Befehlen, deren Erfolg garantiert ist oder die vollständig fehlschlagen (dh die Hälfte der Befehle wird nicht ausgeführt und der Rest schlägt fehl, wenn einer fehlschlägt, schlagen alle fehl).

Soweit mir bekannt ist, verwendet SQL Server das Verbindungspooling, sodass ich mich nicht auf die eine Verbindung pro Client-Idee verlassen würde.

Cromulent
quelle
1
Was ist die Kardinalität zwischen Batch und Transaktion? Ist es möglich, mehrere Stapel pro Transaktion zu haben? Wie wäre es umgekehrt?
1
Soweit mir bekannt ist, ist es möglich, mehrere Transaktionen pro Stapel zu haben, aber es ist nicht möglich, mehrere Stapel pro Transaktion zu haben.
Cromulent
5

Transaktionen und Stapel sind zwei unabhängige Konzepte. Beide können in einer Eins-zu-Viele-Konfiguration verwendet werden.

Transaktionsblöcke sind eine einzelne "Arbeitseinheit", ein Konzept, bei dem festgeschriebenes SQL entweder vollständig oder überhaupt nicht funktionieren muss. Wenn Sie beispielsweise zwei miteinander verknüpfte Tabellen aktualisieren; Beide müssen erfolgreich sein, damit die Datenänderung festgeschrieben werden kann. [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]

Batch ist ein Microsoft-Konzept. Mit den von Microsoft erstellten Tools wie sqlcmd und osql stellt der Stapel einfach einen einzelnen Ausführungsplan sicher. Wenn Sie beispielsweise eine Variable erstellen und außerhalb des Stapels verwenden, gibt das Tool einen Fehler aus. [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]

Sie können also mehrere Stapel haben, die mehrere Tabellen in einem Transaktionsblock aktualisieren. Soweit sie nicht gegen einzelne Batch-Ausführungspläne verstoßen.

Innerhalb eines Stapels können Sie auch mehrere Transaktionsblöcke haben, um die Datenintegrität zwischen Datenbankentitäten wie Tabellen sicherzustellen.

Die Verbindung ist einfach der Kommunikations-Handshake, mit dem Abfragen auf dem Server ausgeführt werden.

Anweisungen sind einzelne Zeilen, die eine Abfrage bilden. GO (T-SQL-Batch-Separator) und BEGIN TRANSACTION (ANSI SQL zum Starten eines neuen Transaktionsblocks) sind beide Anweisungen.

Aamir Mulla
quelle
1

Stapel und Transaktionen existieren auf derselben Ebene. Ein Stapel ist eine Sammlung von ansonsten nicht verwandten SQL-Befehlen. Eine Transaktion ist eine Sammlung von SQL-Befehlen, die (für alle anderen Benutzer dieser Datenbank) als eine Anweisung ausgeführt werden.

wolfgangsz
quelle