Partilhar via


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