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 13
utente , 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 1
di 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