USER_NAME (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar ett databasanvändarnamn från ett angivet identifikationsnummer eller det aktuella användarnamnet.

Transact-SQL syntaxkonventioner

Syntax

USER_NAME ( [ ID ] )

Arguments

ID

Identifieringsnumret kopplat till en databasanvändare, som anges i sys.database_principals. ID är int. Parenteserna krävs.

Returtyper

nvarchar(128)

Anmärkningar

När ID utelämnas antas den aktuella användaren i det aktuella sammanhanget. Om parametern innehåller ordet NULL, USER_NAME kommer att returnera NULL. När USER_NAME anropas utan att ange ett ID efter ett EXECUTE AS uttalande, USER_NAME returnerar namnet på den imiterade användaren. Om en Windows-principal får tillgång till databasen genom medlemskap i en grupp, USER_NAME returneras namnet på Windows-principalen istället för gruppen.

Även om USER_NAME() funktionen stöds på Azure SQL Database, stöds inte användning EXECUTE AS USER = USER_NAME(n) på Azure SQL Database.

Examples

A. Använd USER_NAME() för att identifiera ett användar-ID

Följande exempel returnerar användarnamnet för användar-ID 13, som anges i sys.database_principals.

SELECT USER_NAME(13);  
GO  

B. Använd USER_NAME utan ID

Följande exempel hittar namnet på den aktuella användaren utan att ange något ID.

SELECT USER_NAME();  
GO  

Här är resultatuppsättningen för en användare som är medlem i sysadmin-funktionen fast server.

dbo  

C. Använd USER_NAME i WHERE-klausulen

Följande exempel hittar raden i sys.database_principals, där namnet är lika med resultatet av att tillämpa systemfunktionen USER_NAME på användaridentifieringsnumret 1.

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

Här är resultatet.

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

D. Anropa USER_NAME under imitation med EXECUTE AS

Följande exempel visar hur USER_NAME han beter sig under imitation.

EXECUTE AS stöds för närvarande inte på Microsoft Fabric.

Försiktighet

När man testar med EXECUTE AS, skriptar alltid ett REVERT att följa.

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

Här är resultatet.

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

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

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

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

E. Använd USER_NAME utan ID

Följande exempel hittar namnet på den aktuella användaren utan att ange något ID.

SELECT USER_NAME();  

Här är resultatuppsättningen för en användare som för närvarande är inloggad.

User7                              

F. Använd USER_NAME i WHERE-klausulen

Följande exempel hittar raden sysusers där namnet är lika med resultatet av att tillämpa systemfunktionen USER_NAME på användaridentifieringsnummer 1.

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

Här är resultatet.

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