Utilisation des fonctions système

Les fonctions système permettent d'accéder aux informations à partir des tables système SQL Server sans avoir à accéder directement à ces tables.

Plusieurs fonctions Transact-SQL ont des noms commençant avec le double signe arobase (@@). Bien que dans des versions antérieures de SQL Server, les fonctions débutant par @@ sont appelées variables globales, elles ne sont pas des variables et n'en ont pas le comportement. Elles sont en réalité des fonctions système, et leur syntaxe suit les mêmes règles que celle des fonctions normales.

Chacune des paires suivantes de fonctions système pour les bases de données, les hôtes, les objets, les connexions et les utilisateurs retourne un nom lorsque vous tapez un numéro d'identification (ID) et un numéro d'identification lorsque vous tapez un nom :

  • DB_ID et DB_NAME ;

  • HOST_ID et HOST_NAME ;

  • OBJECT_ID et OBJECT_NAME ;

  • SUSER_ID et SUSER_NAME (ou SUSER_SID et SUSER_SNAME) ;

  • USER_ID et USER_NAME.

Par exemple, utilisez la fonction DB_ID pour obtenir le numéro d'identification d'une base de données au lieu d'exécuter l'instruction SELECT de la table sysobjects.

L'exemple suivant présente l'extraction du nom d'utilisateur de l'utilisateur ayant actuellement ouvert une session (à l'aide de l'authentification SQL Server) :

SELECT SUSER_NAME();

Les fonctions suivantes sont similaires, mais elles n'apparaissent pas sous la forme de paires complémentaires et admettent plusieurs paramètres :

  • COL_LENGTH

    Retourne la longueur d'une colonne et non la longueur d'une chaîne stockée dans la colonne. Utilisez la fonction DATALENGTH pour déterminer le nombre total de caractères dans une valeur spécifique.

    Dans l'exemple suivant, la fonction retourne la longueur de la colonne et la longueur des données de la colonne LastName dans la table Employees :

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

    Retourne un nom de colonne.

  • INDEX_COL

    Retourne un nom de colonne d'index.

Il est conseillé d'utiliser les fonctions système, les vues des informations de schéma ou les procédures stockées système pour accéder aux informations système sans lancer les requêtes directement dans les tables système. Les tables système peuvent changer de manière significative d'une version à l'autre de SQL Server.