Verwenden von Systemfunktionen
Systemfunktionen ermöglichen den Zugriff auf Informationen aus den SQL Server-Systemtabellen, ohne dass direkt auf die Systemtabellen zugegriffen wird.
Die Namen einiger Transact-SQL-Systemfunktionen beginnen mit zwei @-Zeichen (@@). Die @@Funktionen werden in früheren Versionen von SQL Server zwar als globale Variablen bezeichnet, es handelt sich jedoch nicht um Variablen, und sie verhalten sich nicht wie Variablen. Die @@Funktionen sind Systemfunktionen, deren Syntaxverwendung den Regeln für Funktionen entspricht.
Jedes der folgenden Paare von Systemfunktionen für Datenbanken, Hosts, Objekte, Anmeldenamen und Benutzer gibt den Namen zu einer vorgegebenen ID oder die ID zu einem vorgegebenen Namen zurück:
DB_ID und DB_NAME
HOST_ID und HOST_NAME
OBJECT_ID und OBJECT_NAME
SUSER_ID und SUSER_NAME (oder SUSER_SID und SUSER_SNAME)
USER_ID und USER_NAME
Verwenden Sie z. B. die DB_ID-Funktion zum Abrufen einer numerischen Datenbank-ID, statt eine SELECT-Anweisung für die sysobjects-Tabelle auszuführen.
Das folgende Beispiel zeigt, wie der Benutzername für den aktuellen Benutzer abgerufen wird, der mithilfe der SQL Server-Authentifizierung angemeldet ist:
SELECT SUSER_NAME();
Die folgenden Funktionen verhalten sich ähnlich, treten jedoch nicht als Gegensatzpaare auf und akzeptieren zudem mehrere Eingabeparameter:
COL_LENGTH
Gibt die Länge einer Spalte, aber nicht die Länge einzelner, in der Spalte gespeicherter Zeichenfolgen zurück. Verwenden Sie die DATALENGTH-Funktion, um die Gesamtanzahl der Zeichen in einem bestimmten Wert zu ermitteln.
Das folgende Beispiel gibt die Spaltenlänge und die Datenlänge der LastName-Spalte in der Employees-Tabelle zurück:
SELECT COL_LENGTH('Employees', 'LastName') AS Col_Length, DATALENGTH(LastName) AS DataLength FROM Employees WHERE EmployeeID > 6;
COL_NAME
Gibt einen Spaltennamen zurück
INDEX_COL
Gibt einen Indexspaltennamen zurück
Es empfiehlt sich, die Systemfunktionen, Informationsschemasichten oder die gespeicherten Systemprozeduren zu verwenden, um Systeminformationen abzurufen, ohne die Systemtabellen direkt zu abzufragen. Systemtabellen können sich von Version zu Version von SQL Server erheblich ändern.
Siehe auch