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.