Usar las funciones del sistema

Las funciones del sistema permiten tener acceso a la información de las tablas del sistema de SQL Server sin tener acceso directamente a las tablas del sistema.

Los nombres de algunas funciones del sistema de Transact-SQL empiezan con dos arrobas (@@). A pesar de que en versiones anteriores de SQL Server se hacía referencia a las funciones que empiezan por @@ como variables globales, no son variables y no tienen el mismo comportamiento que las variables. Las funciones que empiezan por @@ son funciones del sistema, y el uso de su sintaxis sigue las reglas de la funciones.

Cada uno de los siguientes pares de funciones del sistema para bases de datos, hosts, objetos, inicios de sesión y usuarios devuelve un nombre cuando se le proporciona un identificador (Id.) y devuelve un identificador cuando se le proporciona un nombre:

  • DB_ID y DB_NAME

  • HOST_ID y HOST_NAME

  • OBJECT_ID y OBJECT_NAME

  • SUSER_ID y SUSER_NAME (o SUSER_SID y SUSER_SNAME)

  • USER_ID y USER_NAME

Por ejemplo, para obtener un número de Id. de base de datos, use la función DB_ID en lugar de ejecutar una instrucción SELECT de la tabla sysobjects.

En el siguiente ejemplo se muestra cómo se recupera el nombre del usuario actual conectado mediante la Autenticación de SQL Server:

SELECT SUSER_NAME();

Las siguientes funciones son similares, pero no se producen en pares complementarios y necesitan más de un parámetro de entrada:

  • COL_LENGTH

    Devuelve la longitud de una columna, pero no la longitud de cualquier cadena individual almacenada en la columna. Use la función DATALENGTH para determinar el número total de caracteres en un valor determinado.

    En el ejemplo siguiente se devuelve la longitud de la columna y la longitud de los datos de la columna LastName en la tabla Employees:

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

    Devuelve un nombre de columna.

  • INDEX_COL

    Devuelve el nombre de la columna de índice.

Se recomienda utilizar las funciones del sistema, las vistas del esquema de información o los procedimientos almacenados del sistema para obtener información del sistema sin consultar directamente las tablas del sistema. Las tablas del sistema pueden cambiar significativamente entre versiones de SQL Server.