Partilhar via


USER_NAME (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Devolve um nome de utilizador da base de dados a partir de um número de identificação especificado, ou do nome de utilizador atual.

Transact-SQL convenções de sintaxe

Sintaxe

USER_NAME ( [ ID ] )

Arguments

ID

O número de identificação associado a um utilizador de base de dados, conforme listado em sys.database_principals. ID é inteligência. Os parênteses são obrigatórios.

Tipos de devolução

nvarchar(128)

Observações

Quando o ID é omitido, assume-se o utilizador atual no contexto atual. Se o parâmetro contiver a palavra NULL, USER_NAME devolverá NULL. Quando USER_NAME é chamado sem especificar um ID após uma EXECUTE AS instrução, USER_NAME retorna o nome do utilizador suplantado. Se um principal do Windows aceder à base de dados através da pertença a um grupo, USER_NAME devolve o nome do principal do Windows em vez do grupo.

Embora a USER_NAME() função seja suportada na Azure SQL Database, a utilização EXECUTE AS USER = USER_NAME(n) não é suportada na Azure SQL Database.

Examples

A. Use USER_NAME() para identificar um ID de utilizador

O exemplo seguinte devolve o nome de utilizador para o ID 13de utilizador, conforme listado em sys.database_principals.

SELECT USER_NAME(13);  
GO  

B. Use USER_NAME sem identificação

O exemplo seguinte encontra o nome do utilizador atual sem especificar um ID.

SELECT USER_NAME();  
GO  

Aqui está o conjunto de resultados para um utilizador que é membro do papel fixo de servidor sysadmin.

dbo  

C. Use USER_NAME na cláusula WHERE

O exemplo seguinte encontra a linha em sys.database_principals, na qual o nome é igual ao resultado da aplicação da função USER_NAME do sistema ao número 1de identificação do utilizador .

SELECT name FROM sys.database_principals WHERE name = USER_NAME(1);  
GO  

Aqui está o conjunto de resultados.

name  
------------------------------  
dbo  
  
(1 row(s) affected)

D. Chamar USER_NAME durante a usurpação de personificação com EXECUTAR AS

O exemplo seguinte mostra como USER_NAME se comporta durante a personificação.

EXECUTE AS atualmente não é suportado no Microsoft Fabric.

Atenção

Ao testar com EXECUTE AS, sempre script a REVERT para seguir.

SELECT USER_NAME();  
GO  
EXECUTE AS USER = 'Zelig';  
GO  
SELECT USER_NAME();  
GO  
REVERT;  
GO  
SELECT USER_NAME();  
GO  

Aqui está o conjunto de resultados.

-------------
dbo  

-------------
Zelig  

-------------
dbo  

Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)

E. Use USER_NAME sem identificação

O exemplo seguinte encontra o nome do utilizador atual sem especificar um ID.

SELECT USER_NAME();  

Aqui está o conjunto de resultados para um utilizador atualmente iniciado sessão.

User7                              

F. Use USER_NAME na cláusula WHERE

O exemplo seguinte encontra a linha em sysusers que o nome é igual ao resultado da aplicação da função USER_NAME do sistema ao número 1de identificação do utilizador .

SELECT name FROM sysusers WHERE name = USER_NAME(1);  

Aqui está o conjunto de resultados.

name                             
------------------------------   
User7