Usando as funções do sistema

As funções do sistema permitem acessar informações das tabelas do sistema SQL Server sem acessar diretamente essas tabelas.

Os nomes de algumas funções de sistema Transact-SQL começam com dois sinais de arroba (@ @). Embora nas versões anteriores de SQL Server, as funções @@ foram referidas como variáveis globais, elas não são variáveis e não têm o mesmo comportamento das variáveis. As funções @@ são funções de sistema, e o uso de sua sintaxe segue as regras das funções.

Cada um dos pares a seguir das funções do sistema para bancos de dados, hosts, objetos, logons e usuários retorna um nome quando um identificador (ID) for definido e retorna uma ID quando um nome for definido:

  • DB_ID e DB_NAME

  • HOST_ID e HOST_NAME

  • OBJECT_ID e OBJECT_NAME

  • SUSER_ID e SUSER_NAME (ou SUSER_SID e SUSER_SNAME)

  • USER_ID e USER_NAME

Por exemplo, para obter o número de ID do banco de dados, use a função DB_ID ao invés de executar um SELECT da tabela sysobjects.

O exemplo a seguir mostra como recuperar o nome de usuário para um usuário atual conectado usando a Autenticação SQL Server.

SELECT SUSER_NAME();

As funções a seguir são semelhantes, porém, não ocorrem em pares complementares e podem precisar de mais de um parâmetro de entrada:

  • COL_LENGTH

    Retorna o comprimento de uma coluna, mas não o comprimento de qualquer cadeia de caracteres individual armazenada na coluna. Use a função DATALENGTH para determinar o número total de caracteres em um valor específico.

    O exemplo a seguir retorna o comprimento de coluna e o comprimento de dados da coluna LastName na tabela Employees:

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

    Retorna um nome de coluna.

  • INDEX_COL

    Retorna um nome de coluna de índice.

Recomendamos que use as funções do sistema, exibições de esquemas de informações, ou os procedimentos armazenados no sistema para obter informações do sistema sem consultar diretamente as tabelas do sistema. As tabelas do sistema podem alterar de modo significativo entre as versões do SQL Server.