Michael Blaess

SQL Server Cheat-Sheet

SQL Server 2019 und neuer · T-SQL · Stand 21.09.2026

Letzter Wert nach einem INSERT

SCOPE_IDENTITY()letzte Identity, eigene Anweisung
@@IDENTITYauch aus einem Trigger, Vorsicht
IDENT_CURRENT('dbo.T')letzte der Tabelle, jede Sitzung
OUTPUT inserted.Idalle neuen Werte, mehrere Zeilen
NEXT VALUE FOR dbo.Seqnächster Wert der Sequenz
@@ROWCOUNTbetroffene Zeilen, sofort lesen

Fügt ein Trigger selbst ein, liefert @@IDENTITY dessen Wert. Mit Trigger geht OUTPUT nur mit INTO @tabelle, sonst Fehler 334.

Fehler und Transaktionen

@@ERRORletzte Fehlernummer, 0 = ok
ERROR_MESSAGE()im CATCH, auch ERROR_LINE()
THROW;Fehler im CATCH weiterreichen
@@TRANCOUNToffene Transaktionen
XACT_STATE()1 ok, -1 nur Rollback, 0 keine
SET XACT_ABORT ONFehler bricht Transaktion ab

Server und Version

@@VERSIONVersion und Build als Text
'ProductVersion'15.0 = 2019, 16.0 = 2022
'ProductUpdateLevel'CU-Stand, NULL = keiner
'Edition'Standard, Enterprise ...
@@SERVERNAMEServername

Abfrage mit SERVERPROPERTY('...').

Eigene Sitzung

@@SPIDeigene Sitzungsnummer
DB_NAME()aktuelle Datenbank
SUSER_SNAME()Anmeldename
@@LANGUAGESprache der Sitzung
@@DATEFIRST1. Wochentag, Deutsch 1, US 7
@@LOCK_TIMEOUTSperr-Wartezeit ms, -1 = endlos
@@FETCH_STATUSCursor: 0 = Zeile, -1 = Ende

DATEPART(weekday, ...) hängt an @@DATEFIRST: Montag ist bei Deutsch 1, bei us_english 2.

Systemprozeduren

sp_who2 'active'Sitzungen, BlkBy = Blocker
sp_help 'dbo.T'Spalten, Indizes, Schlüssel
sp_helptext 'dbo.P'Quelltext von Prozedur, Sicht
sp_spaceused 'dbo.T'Zeilen und belegter Platz
sp_executesqldynamisches SQL mit Parametern
sp_configureServeroptionen

Viele erst nach 'show advanced options', 1.

Was läuft gerade

dm_exec_requestsAnfragen, blocking_session_id
dm_exec_sessionsSitzungen, Host, Programm
dm_exec_sql_textSQL-Text per CROSS APPLY
dm_exec_input_bufferletzter Befehl einer Sitzung
dm_tran_locksgehaltene Sperren
dm_os_wait_statsWartezeiten seit dem Start

Alle Sichten liegen im Schema sys, also sys.dm_exec_requests. Bei den Wartezeiten stehen oben harmlose Leerlauf-Waits.

Abfragen und Indizes

dm_exec_query_statsteure Abfragen, total_worker_time
dm_db_index_usage_statsgenutzte und ungenutzte Indizes
dm_db_missing_index_*Indexvorschläge, prüfen statt übernehmen
dm_db_index_physical_statsFragmentierung, 'LIMITED'

Ein Neustart setzt diese Zahlen zurück.

DBCC

DBCC CHECKDBKonsistenz prüfen
DBCC SQLPERF(LOGSPACE)Füllstand aller Logs
DBCC OPENTRANälteste offene Transaktion
DBCC FREEPROCCACHEleert den Plan-Cache, nie in Produktion

Datenbanken und Objekte

sys.databasesKompatibilität 150 = 2019
msdb.dbo.backupsetletzte Sicherungen
OBJECT_ID('dbo.T')NULL = gibt es nicht
DROP TABLE IF EXISTSlöschen ohne Vorabprüfung
CREATE OR ALTERProzedur oder Sicht anlegen