Vorlage für eine temporäre Tabelle, diese wird meist innerhalb einer Prozedur verwendet. Im Managementstudio Shift+Strg + M drücken, um die Platzhalter per Dialog zu füllen.
/*
Snippet für die Erstellung einer tmp Tabelle per SSM
Zuletzt geändert: 07/2026
Gerd Tautenhahn für Saxess Software GmbH
*/
DROP TABLE IF EXISTS #<Tabellenname,String,tXXX>;
CREATE TABLE #<Tabellenname,String,tXXX>
(
RowKey BIGINT IDENTITY (1,1) -- diese Zeile erzeugt einen Primärschlüssel, ggf. weglassen und Tabelle als Heap nutzen
,FactoryID NVARCHAR(255) COLLATE DATABASE_DEFAULT NOT NULL
,ProductLineID NVARCHAR(255) COLLATE DATABASE_DEFAULT NOT NULL
,Buchungstext NVARCHAR(4000) COLLATE DATABASE_DEFAULT NOT NULL
);
Sortierung
Eine temporäre Tabelle wird vom SQL Server immer in der temp Datenbank erzeugt, nicht in der Datenbank, in welcher das Script ausgeführt wird. Da diese eine andere Sortierung als die aufrufende Datenbank haben kann, muss über die Option COLLATE DATABASE_DEFAULT in der Tabelle die Sortierung der aufrufenden Datenbank für jede Textspalte definiert werden.
Parallele Ausführung der Prozedur durch mehrere Benutzer
In einer temporären Tabelle darf es keine benannten Contraints geben - dieses Namen würden fest vergeben und führen zum Konflikt bei paralleler Ausführung durch mehrere
Benutzer https://learn.microsoft.com/en-us/answers/questions/461476/primary-key-constraint-on-a-temporary-table
Auch ein Index mit benanntem Namen würde zu Problemen bei paralleler Ausführung führen.
Indexe in temp Tabellen sind selten nötig https://www.brentozar.com/archive/2021/08/you-probably-shouldnt-index-your-temp-tables/
Setze im aufrufenden Script SET STATISTICS TIME ON; für eine exakte Performancemessung.
Um einen Primärschlüssel auf einer anderen Spalte als dem RowKey zu erzeugen definiert man die Spalte z.B. als "Kalendertag DATE PRIMARY KEY" , dadurch entsteht automatisch ein Clustered Index für die die Tabelle (sofern nicht schon einer existiert)
Falls ein Index über mehrere Spalten gehen soll, den Index ohne Namensangabe erstellen lassen.
CREATE TABLE #TempTable
(
ID INT
,Name NVARCHAR(50)
PRIMARY KEY CLUSTERED (ID, Name) -- Ohne expliziten Namen, SQL Server generiert den Namen automatisch
);