Letzter Wert nach einem INSERT
| SCOPE_IDENTITY() | letzte Identity, eigene Anweisung |
| @@IDENTITY | auch aus einem Trigger, Vorsicht |
| IDENT_CURRENT('dbo.T') | letzte der Tabelle, jede Sitzung |
| OUTPUT inserted.Id | alle neuen Werte, mehrere Zeilen |
| NEXT VALUE FOR dbo.Seq | nächster Wert der Sequenz |
| @@ROWCOUNT | betroffene 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
| @@ERROR | letzte Fehlernummer, 0 = ok |
| ERROR_MESSAGE() | im CATCH, auch ERROR_LINE() |
| THROW; | Fehler im CATCH weiterreichen |
| @@TRANCOUNT | offene Transaktionen |
| XACT_STATE() | 1 ok, -1 nur Rollback, 0 keine |
| SET XACT_ABORT ON | Fehler bricht Transaktion ab |
Server und Version
| @@VERSION | Version und Build als Text |
| 'ProductVersion' | 15.0 = 2019, 16.0 = 2022 |
| 'ProductUpdateLevel' | CU-Stand, NULL = keiner |
| 'Edition' | Standard, Enterprise ... |
| @@SERVERNAME | Servername |
Abfrage mit SERVERPROPERTY('...').
Eigene Sitzung
| @@SPID | eigene Sitzungsnummer |
| DB_NAME() | aktuelle Datenbank |
| SUSER_SNAME() | Anmeldename |
| @@LANGUAGE | Sprache der Sitzung |
| @@DATEFIRST | 1. Wochentag, Deutsch 1, US 7 |
| @@LOCK_TIMEOUT | Sperr-Wartezeit ms, -1 = endlos |
| @@FETCH_STATUS | Cursor: 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_executesql | dynamisches SQL mit Parametern |
| sp_configure | Serveroptionen |
Viele erst nach 'show advanced options', 1.
Was läuft gerade
| dm_exec_requests | Anfragen, blocking_session_id |
| dm_exec_sessions | Sitzungen, Host, Programm |
| dm_exec_sql_text | SQL-Text per CROSS APPLY |
| dm_exec_input_buffer | letzter Befehl einer Sitzung |
| dm_tran_locks | gehaltene Sperren |
| dm_os_wait_stats | Wartezeiten 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_stats | teure Abfragen, total_worker_time |
| dm_db_index_usage_stats | genutzte und ungenutzte Indizes |
| dm_db_missing_index_* | Indexvorschläge, prüfen statt übernehmen |
| dm_db_index_physical_stats | Fragmentierung, 'LIMITED' |
Ein Neustart setzt diese Zahlen zurück.
DBCC
| DBCC CHECKDB | Konsistenz prüfen |
| DBCC SQLPERF(LOGSPACE) | Füllstand aller Logs |
| DBCC OPENTRAN | älteste offene Transaktion |
| DBCC FREEPROCCACHE | leert den Plan-Cache, nie in Produktion |
Datenbanken und Objekte
| sys.databases | Kompatibilität 150 = 2019 |
| msdb.dbo.backupset | letzte Sicherungen |
| OBJECT_ID('dbo.T') | NULL = gibt es nicht |
| DROP TABLE IF EXISTS | löschen ohne Vorabprüfung |
| CREATE OR ALTER | Prozedur oder Sicht anlegen |