Utilizzo delle funzioni di sistema

Le funzioni di sistema consentono di accedere alle informazioni presenti nelle tabelle di sistema di SQL Server senza accedere direttamente a tali tabelle.

I nomi di alcune funzioni di sistema Transact-SQL iniziano con due chiocciole (@@). Sebbene le funzioni @@ vengano denominate variabili globali nelle versioni precedenti di SQL Server, non sono variabili e il relativo funzionamento è diverso. Si tratta infatti di funzioni di sistema e la relativa sintassi segue le regole previste per le funzioni.

Ogni coppia di funzioni di sistema seguente relativa a database, host, oggetti, account di accesso e utenti restituisce il nome associato all'ID specificato oppure l'ID associato al nome specificato.

  • DB_ID e DB_NAME

  • HOST_ID e HOST_NAME

  • OBJECT_ID e OBJECT_NAME

  • SUSER_ID e SUSER_NAME (o SUSER_SID e SUSER_SNAME)

  • USER_ID e USER_NAME

Ad esempio, per ottenere un ID di database, è possibile utilizzare la funzione DB_ID anziché eseguire un'istruzione SELECT per la tabella sysobjects.

Nell'esempio seguente viene illustrato il processo di recupero del nome dell'utente corrente che si è connesso mediante l'autenticazione di SQL Server:

SELECT SUSER_NAME();

Le funzioni seguenti sono simili, ma non vengono utilizzate in coppie complementari e richiedono più parametri di input:

  • COL_LENGTH

    Restituisce la lunghezza di una colonna, ma non la lunghezza di ogni singola stringa archiviata nella colonna. La funzione DATALENGTH consente di determinare il numero totale di caratteri contenuti in uno specifico valore.

    Nell'esempio seguente vengono restituite la lunghezza della colonna e la lunghezza dei dati corrispondenti per la colonna LastName della tabella Employees:

    SELECT COL_LENGTH('Employees', 'LastName') AS Col_Length, 
       DATALENGTH(LastName) AS DataLength
    FROM Employees
    WHERE EmployeeID > 6;
    
  • COL_NAME

    Restituisce il nome di una colonna.

  • INDEX_COL

    Restituisce il nome di una colonna di indice.

Per ottenere informazioni di sistema senza eseguire direttamente query sulle tabelle di sistema, è consigliabile utilizzare le funzioni di sistema, le viste degli schemi delle informazioni o le stored procedure di sistema. Le tabelle di sistema possono variare notevolmente tra versioni diverse di SQL Server.