Welcome to Our Website

SQLShack (Deutsch)

Es ist sehr vorteilhaft, Daten in temporären SQL Server-Tabellen zu speichern, anstatt sie zu bearbeiten oder mit permanenten Tabellen zu arbeiten. Angenommen, Sie möchten vollständigen DDL-oder DML-Zugriff auf eine Tabelle, haben diese jedoch nicht. Sie können Ihren vorhandenen Lesezugriff verwenden, um die Daten in eine temporäre SQL Server-Tabelle zu ziehen und von dort aus Anpassungen vorzunehmen. Wenn Sie keine Berechtigungen zum Erstellen einer Tabelle in der vorhandenen Datenbank haben, können Sie eine temporäre SQL Server-Tabelle erstellen, die Sie bearbeiten können., Schließlich befinden Sie sich möglicherweise in einer Situation, in der die Daten nur in der aktuellen Sitzung sichtbar sein müssen.

SQL Server unterstützt einige Arten von temporären SQL Server-Tabellen, die sehr hilfreich sein können.

Wenn Sie mit Codebeispielen fortfahren möchten, empfehle ich Ihnen, SQL Server Management Studio zu öffnen:

Lokale SQL Temp-Tabellen

Lokale SQL Server Temp-Tabellen werden mit dem Pfundsymbol oder“ Hashtag “ gefolgt vom Tabellennamen erstellt. Beispiel: #Tabellenname. SQL Temp-Tabellen werden in der tempdb-Datenbank erstellt., Eine lokale temporäre SQL Server-Tabelle ist nur für die aktuelle Sitzung sichtbar. Es kann nicht von Prozessen oder Abfragen außerhalb der Sitzung gesehen oder verwendet werden, in der es deklariert ist.

Hier ist ein kurzes Beispiel, wie Sie eine Ergebnismenge in eine temporäre SQL Server-Tabelle einfügen.

Eines der am häufigsten verwendeten Szenarien für temporäre SQL Server-Tabellen befindet sich in einer Schleife. Wenn Sie beispielsweise Daten für eine SQL-Anweisung verarbeiten möchten, benötigen Sie einen Ort zum Speichern von Elementen zum Durchlesen Ihrer Schleife. Es bietet ein schnelles und effizientes Mittel, dies zu tun., Siehe das obige Codebeispiel, Ihre Schleife kann jetzt auf die temporäre SQL Server-Tabelle verweisen und die Datensätze verarbeiten, die die Kriterien Ihres Ziels erfüllen.

Ein weiterer Grund, temporäre SQL Server-Tabellen zu verwenden, besteht darin, dass Sie in Ihrer SQL-Anweisung eine anspruchsvolle Verarbeitung durchführen müssen. Angenommen, Sie erstellen einen Join, und jedes Mal, wenn Sie Datensätze aus dieser Ergebnismenge abrufen müssen, muss dieser Join erneut verarbeitet werden. Warum nicht einfach diese Ergebnismenge einmal verarbeiten und die Datensätze in eine temporäre SQL-Tabelle werfen? Dann können Sie den Rest der SQL-Anweisung auf den Namen der temporären SQL-Tabelle verweisen lassen., Dies spart nicht nur teure Abfrageverarbeitung, sondern kann sogar dazu führen, dass Ihr Code etwas sauberer aussieht.

Es gibt jedoch einen Punkt, den ich machen möchte. Wenn die Sitzung, in der wir arbeiten, über nachfolgende verschachtelte Sitzungen verfügt, werden die temporären SQL Server-Tabellen in Sitzungen angezeigt, die in der Hierarchie niedriger, in der Hierarchie jedoch nicht höher sind. Bitte erlauben Sie mir, dies zu visualisieren.

In diesem Schnelldiagramm wird in Sitzung 2 eine temporäre SQL-Tabelle erstellt. Die darunter liegenden Sitzungen (Sitzungen 3 und Sitzung 4) können die temporäre SQL Server-Tabelle anzeigen., Sitzung 1, die über Sitzung 2 liegt, kann die temporäre Tabelle des SQL Servers jedoch nicht sehen.

Die SQL temporäre Tabelle gelöscht oder vernichtet werden, sobald die Sitzung getrennt wird. Oft sehen Sie, dass Entwickler den Befehl“ DROP #Table_Name “ am Ende ihrer Anweisung verwenden, nur um aufzuräumen. Aber es liegt ganz bei dir und was du erreichen willst.,

Beachten Sie auch, dass SQL Server im Falle eines Namenskonflikts (denken Sie daran, dass temporäre SQL Server-Tabellen in der tempdb erstellt werden) ein Suffix an das Ende des Tabellennamens anfügt, damit er in der tempdb-Datenbank eindeutig ist. Dieser Prozess ist jedoch für den Entwickler/Benutzer transparent. Sie können denselben Namen verwenden, den Sie deklariert haben, da er auf diese Sitzung beschränkt ist.

Globale SQL temp tables

Globale SQL-temporäre Tabellen sind nützlich, wenn Sie wollen Sie wollen das ResultSet sichtbar für alle anderen Sitzungen. Keine Notwendigkeit, Berechtigungen einzurichten., Jeder kann Werte einfügen, ändern oder Datensätze aus der Tabelle abrufen. Beachten Sie auch, dass jeder den Tisch fallen lassen kann. Wie lokale temporäre SQL Server-Tabellen werden sie gelöscht, sobald die Sitzung getrennt wird, und es gibt keine Verweise mehr auf die Tabelle. Sie können immer den Befehl „DROP“ verwenden, um ihn manuell zu bereinigen. Welches ist etwas, das ich empfehlen würde.

Um eine globale SQL Temp-Tabelle zu erstellen, verwenden Sie einfach zwei Pfundsymbole vor dem Tabellennamen. Beispiel: ##Global_Table_Name.,

Table-Variablen

Table-Variablen erstellt werden wie jede andere variable, mit der DECLARE-Anweisung. Viele glauben, dass Tabellenvariablen nur im Speicher existieren, aber das ist einfach nicht wahr. Sie befinden sich in der tempdb-Datenbank ähnlich wie lokale temporäre SQL Server-Tabellen. Wie lokale temporäre SQL-Tabellen sind auch Tabellenvariablen nur innerhalb der Sitzung zugänglich, die sie erstellt hat. Im Gegensatz zu SQL Temp-Tabellen ist die Tabellenvariable jedoch nur innerhalb des aktuellen Stapels zugänglich. Sie sind außerhalb des Stapels nicht sichtbar, was bedeutet, dass das Konzept der Sitzungshierarchie etwas ignoriert werden kann.,

Was die Leistung betrifft, sind Tabellenvariablen bei kleinen Datenmengen (wie nur wenigen Zeilen) nützlich. Andernfalls ist eine temporäre SQL Server-Tabelle nützlich, wenn Sie große Datenmengen durchsuchen. Bei den meisten Skripten wird daher höchstwahrscheinlich die Verwendung einer temporären SQL Server-Tabelle im Gegensatz zu einer Tabellenvariablen angezeigt. Um nicht zu sagen, dass einer nützlicher ist als der andere, müssen Sie nur das richtige Werkzeug für den Job auswählen.

Hier ist ein kurzes Beispiel für die Einrichtung und Verwendung einer Tabellenvariablen.,

Wir haben eine Tabellenvariable erstellt, die Informationen zu den Gesamtmengen eines bestimmten verkauften Produkts enthält. Dies ist ein sehr vereinfachtes Beispiel, und wir würden es nicht verwenden, wenn es viele Zeilen enthalten würde. Aber wenn wir uns nur ein paar Produkte ansehen würden, könnte das wirklich gut sein. Sobald die Tabellenvariable ausgefüllt ist, können Sie diese als Tabelle zu einer weiteren Tabelle verbinden und alle Informationen sammeln, die Sie benötigen. Es gibt also viel Flexibilität und ermöglicht dem Entwickler, ziemlich kreativ zu sein.

Auch abschließend in Bezug auf Transaktionen mit Tabellenvariablen., Wenn ein Entwickler eine Transaktion zurücksetzt, die Änderungen an den Tabellenvariablen enthält, bleiben die Änderungen an den Tabellenvariablen innerhalb dieser bestimmten Transaktion intakt. Das heißt, andere Teile dieser fraglichen Transaktion werden zurückgesetzt, aber alles, was auf die Tabellenvariable verweist, wird nicht, es sei denn, dieser Teil Ihres Skripts ist fehlerhaft.,

  • Author
  • Recent Posts
Aamir ist ein SQL Server Datenbankadministrator im NYC/NJ Bereich (und hat vor kurzem eine Rolle als Datenbankentwickler übernommen).
Er begann seine IT-Karriere in Helpdesk Welt und zog schließlich in die Vernetzung/Systemadministrator Seite der Dinge. Nach einiger Zeit entwickelte er eine Vorliebe für die Arbeit mit Datenbanken (hauptsächlich SQL Server) und konzentriert sich seit acht Jahren darauf., Er hat für verschiedene Branchen in großen und kleinen Umgebungen mit unterschiedlichen Bedürfnissen gearbeitet.
SQL Shack hat ihm die Möglichkeit gegeben, zu einer Gemeinschaft beizutragen, die ihm im Laufe der Jahre so viel gegeben hat.,
Alle Beiträge von Aamir Syed

Neueste Beiträge von Aamir Syed (alle anzeigen)
  • Ist SQL Server immer verschlüsselt, für die Verschlüsselung sensibler Daten, direkt für Ihre Umgebung – 27. februar 2017

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.