Was ist der Unterschied zwischen lokalen und globalen temporären Tabellen in SQL Server?
sql-server
temp-tables
global-temp-tables
Andrew Sullivan
quelle
quelle
Antworten:
Ich finde diese Erklärung ziemlich klar (es ist eine reine Kopie von Technet ):
quelle
Tabellenvariablen (
DECLARE @t TABLE
) sind nur für die Verbindung sichtbar, die sie erstellt, und werden gelöscht, wenn der Stapel oder die gespeicherte Prozedur endet.Lokale temporäre Tabellen (
CREATE TABLE #t
) sind nur für die Verbindung sichtbar, die sie erstellt, und werden gelöscht, wenn die Verbindung geschlossen wird.Globale temporäre Tabellen (
CREATE TABLE ##t
) sind für alle sichtbar und werden gelöscht, wenn alle Verbindungen, auf die verwiesen wurde, geschlossen wurden.Temporäre Tempdb-Tabellen (
USE tempdb CREATE TABLE t
) sind für alle sichtbar und werden beim Neustart des Servers gelöscht.quelle
1.) Eine lokale temporäre Tabelle existiert nur für die Dauer einer Verbindung oder, falls in einer zusammengesetzten Anweisung definiert, für die Dauer der zusammengesetzten Anweisung.
2.) Eine globale temporäre Tabelle bleibt dauerhaft in der Datenbank, aber die Zeilen existieren nur innerhalb einer bestimmten Verbindung. Wenn die Verbindung geschlossen wird, verschwinden die Daten in der globalen temporären Tabelle. Die Tabellendefinition verbleibt jedoch beim Zugriff auf die Datenbank, wenn die Datenbank das nächste Mal geöffnet wird.
quelle
Zitat aus Books Online:
Lokale temporäre Tabellen sind nur in der aktuellen Sitzung sichtbar. Globale temporäre Tabellen sind für alle Sitzungen sichtbar.
Temporäre Tabellen werden automatisch gelöscht, wenn sie den Gültigkeitsbereich verlassen, es sei denn, sie werden explizit mit DROP TABLE gelöscht:
quelle
Lokale temporäre Tabellen : Wenn Sie lokale temporäre Tabellen erstellen und dann eine andere Verbindung öffnen und die Abfrage versuchen, wird der folgende Fehler angezeigt.
Auf die temporären Tabellen kann nur innerhalb der Sitzung zugegriffen werden, in der sie erstellt wurden.
Globale temporäre Tabellen : Manchmal möchten Sie möglicherweise eine temporäre Tabelle erstellen, auf die andere Verbindungen zugreifen können. In diesem Fall können Sie globale temporäre Tabellen verwenden.
Globale temporäre Tabellen werden nur zerstört, wenn alle darauf verweisenden Sitzungen geschlossen sind.
quelle
Es ist erwähnenswert, dass es auch Folgendes gibt: globale temporäre Tabellen mit Datenbankbereich (derzeit nur von Azure SQL Database unterstützt).
quelle
Ich habe keine Antworten gesehen, die Benutzern zeigen, wo wir eine Global Temp-Tabelle finden können. Sie können lokale und globale temporäre Tabellen an derselben Stelle anzeigen, wenn Sie in SSMS navigieren. Screenshot unten von diesem Link .
Datenbanken -> Systemdatenbanken -> Tempdb -> Temporäre Tabellen
quelle