Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Unterschied zwischen lokalen und globalen temporären Tabellen in SQL Server

Wenn Sie eine temporäre Tabelle in SQL Server erstellen, haben Sie die Möglichkeit, sie zu einer lokalen oder globalen temporären Tabelle zu machen.

Hier ist ein kurzer Überblick über die Hauptunterschiede zwischen lokalen temporären Tabellen und globalen temporären Tabellen.

Benennung

  • Die Namen lokaler temporärer Tabellen beginnen mit einem einzelnen Nummernzeichen (# ). Beispiel:#MyTable .
  • Lokale temporäre Tabellen erhalten auch ein vom System generiertes numerisches Suffix, das an den Namen angehängt wird. Diese wird automatisch von SQL Server generiert. Dadurch können mehrere Sitzungen lokale temporäre Tabellen mit demselben Namen erstellen, ohne dass es zu Namenskonflikten kommt. Benutzer können die Tabelle jedoch weiterhin abfragen, ohne das Suffix kennen zu müssen.
  • Die Namen der globalen temporären Tabellen beginnen mit einem doppelten Nummernzeichen (## ). Beispiel:##MyTable .
  • Globale temporäre Tabellen sind nicht mit einem Suffix angehängt wie bei lokalen temporären Tabellen.

Sichtbarkeit

  • Lokale temporäre Tabellen sind nur in der aktuellen Sitzung sichtbar.
  • Globale temporäre Tabellen sind für alle Sitzungen sichtbar.

Lebensdauer

  • Lokale temporäre Tabellen werden am Ende der aktuellen Sitzung automatisch gelöscht. Eine in einer gespeicherten Prozedur erstellte lokale temporäre Tabelle wird automatisch gelöscht, wenn die gespeicherte Prozedur beendet ist. Auf die Tabelle kann von allen verschachtelten gespeicherten Prozeduren verwiesen werden, die von der gespeicherten Prozedur ausgeführt werden, die die Tabelle erstellt hat. Auf die Tabelle kann nicht von dem Prozess verwiesen werden, der die gespeicherte Prozedur aufgerufen hat, die die Tabelle erstellt hat.
  • Globale temporäre Tabellen werden automatisch gelöscht, wenn die Sitzung, die die Tabelle erstellt hat, endet und alle anderen Tasks aufgehört haben, auf sie zu verweisen. Die Zuordnung zwischen einer Aufgabe und einer Tabelle wird nur für die Lebensdauer einer einzelnen T-SQL-Anweisung aufrechterhalten. Daher wird eine globale temporäre Tabelle nach Abschluss der letzten T-SQL-Anweisung gelöscht, die aktiv auf die Tabelle verwiesen hat, als die Erstellungssitzung beendet wurde.