USER_NAME (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric
Retorna um nome de usuário do banco de dados a partir de um número de identificação especificado ou o nome de usuário atual.
Convenções de sintaxe de Transact-SQL
Sintaxe
USER_NAME ( [ ID ] )
Argumentos
ID
O número de identificação associado a um usuário de banco de dados, conforme listado em sys.database_principals. ID é int. Os parênteses são necessários.
Tipos de retorno
nvarchar(128)
Comentários
Quando ID é omitido, o usuário atual no contexto atual é assumido. Se o parâmetro contiver a palavra NULL
, USER_NAME
retornará NULL
. Quando USER_NAME
é chamado sem especificar um ID após uma instrução EXECUTE AS
, USER_NAME
retorna o nome do usuário impessoal. Se um principal do Windows acessar o banco de dados por meio da associação em um grupo, USER_NAME
retornará o principal do Windows em vez do grupo.
Embora a função USER_NAME()
tenha suporte no Banco de Dados SQL do Azure, não há suporte para o uso de EXECUTE AS USER = USER_NAME(n)
no Banco de Dados SQL do Azure.
Exemplos
R. Usar USER_NAME() para identificar uma ID de usuário
O exemplo a seguir retorna o nome de usuário do ID de usuário 13
, conforme listado em sys.database_principals.
SELECT USER_NAME(13);
GO
B. Usar USER_NAME sem uma ID
O exemplo a seguir localiza o nome do usuário atual sem especificar um ID.
SELECT USER_NAME();
GO
Este é o conjunto de resultados para um usuário que é um membro da função de servidor fixa sysadmin.
dbo
C. Usar USER_NAME na cláusula WHERE
O exemplo a seguir localiza a linha em sys.database_principals
na qual o nome é igual ao resultado da aplicação da função de sistema USER_NAME
ao número de identificação de usuário 1
.
SELECT name FROM sys.database_principals WHERE name = USER_NAME(1);
GO
Veja a seguir o conjunto de resultados.
name
------------------------------
dbo
(1 row(s) affected)
D. Chamar USER_NAME durante a representação com EXECUTE AS
O exemplo a seguir mostra como USER_NAME
se comporta durante representação.
EXECUTE AS
não é atualmente compatível com o Microsoft Fabric.
Cuidado
Ao testar com EXECUTE AS
, sempre crie um script REVERT
para seguir.
SELECT USER_NAME();
GO
EXECUTE AS USER = 'Zelig';
GO
SELECT USER_NAME();
GO
REVERT;
GO
SELECT USER_NAME();
GO
Veja a seguir o conjunto de resultados.
-------------
dbo
-------------
Zelig
-------------
dbo
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
E. Usar USER_NAME sem uma ID
O exemplo a seguir localiza o nome do usuário atual sem especificar um ID.
SELECT USER_NAME();
Este é o conjunto de resultados para um usuário conectado no momento.
User7
F. Usar USER_NAME na cláusula WHERE
O exemplo a seguir localiza a linha em sysusers
na qual o nome é igual ao resultado da aplicação da função de sistema USER_NAME
ao número de identificação de usuário 1
.
SELECT name FROM sysusers WHERE name = USER_NAME(1);
Veja a seguir o conjunto de resultados.
name
------------------------------
User7