Condividi tramite


USER_NAME (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Restituisce un nome utente del database da un numero di identificazione specificato o dal nome utente corrente.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

USER_NAME ( [ ID ] )

Argomenti

ID

Numero di identificazione associato a un utente del database, come indicato in sys.database_principals. L'ID è int. Le parentesi sono obbligatorie.

Tipi restituiti

nvarchar(128)

Osservazioni:

Quando l'ID viene omesso, viene utilizzato l'utente corrente nel contesto corrente. Se il parametro contiene la parola NULL, USER_NAME restituirà NULL. Quando USER_NAME viene chiamato senza specificare un ID dopo un'istruzione EXECUTE AS , USER_NAME restituisce il nome dell'utente rappresentato. Se un'entità di windows accede al database tramite l'appartenenza a un gruppo, USER_NAME restituisce il nome dell'entità di Windows anziché il gruppo.

Anche se la USER_NAME() funzione è supportata in database SQL di Azure, l'uso EXECUTE AS USER = USER_NAME(n) di non è supportato in database SQL di Azure.

Esempi

R. Usare USER_NAME() per identificare un ID utente

Nell'esempio seguente viene restituito il nome utente per l'ID 13utente , come indicato in sys.database_principals.

SELECT USER_NAME(13);  
GO  

B. Usare USER_NAME senza ID

Nell'esempio seguente viene restituito il nome dell'utente corrente senza specificare un ID.

SELECT USER_NAME();  
GO  

Set di risultati (per un utente membro del ruolo predefinito del server sysadmin):

dbo  

C. Usare USER_NAME nella clausola WHERE

Nell'esempio seguente viene trovata la riga in sys.database_principals, in cui il nome è uguale al risultato dell'applicazione della funzione USER_NAME di sistema al numero 1di identificazione dell'utente .

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

Il set di risultati è il seguente.

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

D. Chiamare USER_NAME durante la rappresentazione con EXECUTE AS

Nell'esempio seguente viene illustrato il comportamento della funzione USER_NAME durante la rappresentazione.

EXECUTE AS non è attualmente supportato in Microsoft Fabric.

Attenzione

Quando si esegue il test con EXECUTE AS, creare sempre uno script REVERT da seguire.

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

Il set di risultati è il seguente.

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

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

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

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

E. Usare USER_NAME senza ID

Nell'esempio seguente viene restituito il nome dell'utente corrente senza specificare un ID.

SELECT USER_NAME();  

Ecco il set di risultati di un utente attualmente connesso.

User7                              

F. Usare USER_NAME nella clausola WHERE

Nell'esempio seguente viene restituita la riga di sysusers contenente un nome che corrisponde al risultato della funzione di sistema USER_NAME per il numero di identificazione utente 1.

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

Il set di risultati è il seguente.

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