webentwicklung-frage-antwort-db.com.de

Muss # zum Erstellen von temporären Tabellen in SQL Server verwendet werden?

Ist es notwendig, # vor dem Erstellen einer temporären Tabelle in SQL Server?

Beispiel:

SELECT column1, column2, someInt, someVarChar 
INTO ItemBack1 
FROM table2
WHERE table2.ID = 7

Für ItemBack1 muss das # Symbol?

Wenn nicht, wozu dient dann # beim Erstellen von temporären Tabellen?

90
Arun CM

Ja. Sie müssen dem Tabellennamen "#" (Hash) voranstellen, um temporäre Tabellen zu erstellen.

Wenn Sie die Tabelle später NICHT benötigen, fahren Sie fort und erstellen Sie sie. Temporäre Tabellen sind normalen Tabellen sehr ähnlich. Es wird jedoch in Tempdb erstellt. Sie ist auch nur über die aktuelle Sitzung zugänglich, d. H. Für EG: Wenn ein anderer Benutzer versucht, auf die von Ihnen erstellte temporäre Tabelle zuzugreifen, kann er dies nicht tun.

"##" (Double-Hash erstellt eine "globale" temporäre Tabelle, auf die auch andere Sitzungen zugreifen können.

Unter dem folgenden Link finden Sie die Grundlagen zu temporären Tabellen: http://www.codeproject.com/Articles/42553/Quick-Overview-Temporary-Tables-in-SQL-Server-2005

Wenn der Inhalt Ihrer Tabelle weniger als 5000 Zeilen umfasst und KEINE Datentypen wie nvarchar (MAX), varbinary (MAX) enthält, sollten Sie die Verwendung von Tabellenvariablen in Betracht ziehen.

Sie sind die schnellsten wie alle anderen Variablen, die im RAM gespeichert sind. Sie werden auch in tempdb gespeichert, nicht im RAM .

DECLARE @ItemBack1 TABLE
(
 column1 int,
 column2 int,
 someInt int,
 someVarChar nvarchar(50)
);

INSERT INTO @ItemBack1
SELECT column1, 
       column2, 
       someInt, 
       someVarChar 
  FROM table2
 WHERE table2.ID = 7;

Weitere Informationen zu Tabellenvariablen: http://odetocode.com/articles/365.aspx

150
mobiledaemon

Der Unterschied zwischen diesen beiden Tabellen ItemBack1 und #ItemBack1 ist, dass das erste dauerhaft ist, während das andere vorübergehend ist.

Schauen Sie sich Ihre Frage noch einmal an

Ist es notwendig, # zum Erstellen einer temporären Tabelle in SQL Server zu verwenden?

Die Antwort lautet Ja, denn ohne dieses vorangestellte # Die Tabelle ist keine temporäre Tabelle, sondern unabhängig von allen Sitzungen und Bereichen.

14
zzlalani