USER_NAME (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Geeft een databasegebruikersnaam terug van een opgegeven identificatienummer, of de huidige gebruikersnaam.

Transact-SQL syntaxis-conventies

Syntaxis

USER_NAME ( [ ID ] )

Arguments

Id

Het identificatienummer dat gekoppeld is aan een databasegebruiker, zoals vermeld in sys.database_principals. ID is int. De haakjes zijn vereist.

Retourtypen

nvarchar(128)

Opmerkingen

Wanneer ID wordt weggelaten, wordt aangenomen dat de huidige gebruiker in de huidige context is. Als de parameter het woord bevat, NULL zal de terugkering USER_NAMEgevenNULL. Wanneer USER_NAME wordt aangeroepen zonder een ID te specificeren na een EXECUTE AS instructie, USER_NAME geeft de naam van de geïmiteerde gebruiker terug. Als een Windows-principal toegang krijgt tot de database via lidmaatschap van een groep, USER_NAME geeft hij de naam van de Windows-principal terug in plaats van de groep.

Hoewel de USER_NAME() functie wordt ondersteund op Azure SQL Database, wordt gebruik EXECUTE AS USER = USER_NAME(n) niet ondersteund op Azure SQL Database.

Voorbeelden

Eén. Gebruik USER_NAME() om een gebruikers-ID te identificeren

Het volgende voorbeeld geeft de gebruikersnaam terug voor user ID 13, zoals vermeld in sys.database_principals.

SELECT USER_NAME(13);  
GO  

B. Gebruik USER_NAME zonder ID

Het volgende voorbeeld vindt de naam van de huidige gebruiker zonder een ID op te geven.

SELECT USER_NAME();  
GO  

Hier is de resultaatset voor een gebruiker die lid is van de sysadmin fixed server-rol.

dbo  

C. Gebruik USER_NAME in de WHERE-clausule

Het volgende voorbeeld vindt de rij in sys.database_principals, waarin de naam gelijk is aan het resultaat van het toepassen van de systeemfunctie USER_NAME op gebruikersidentificatienummer 1.

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

Hier is het resultatenoverzicht.

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

D. Bel USER_NAME tijdens imitatie met EXECUTE AS

Het volgende voorbeeld laat zien hoe USER_NAME hij zich gedraagt tijdens imitatie.

EXECUTE AS momenteel niet ondersteund op Microsoft Fabric.

Waarschuwing

Bij testen met EXECUTE AS, script altijd een script om REVERT te volgen.

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

Hier is het resultatenoverzicht.

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

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

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

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

E. Gebruik USER_NAME zonder ID

Het volgende voorbeeld vindt de naam van de huidige gebruiker zonder een ID op te geven.

SELECT USER_NAME();  

Hier is de resultaatset voor een momenteel ingelogde gebruiker.

User7                              

F. Gebruik USER_NAME in de WHERE-clausule

Het volgende voorbeeld vindt de rij sysusers waarin de naam gelijk is aan het resultaat van het toepassen van de systeemfunctie USER_NAME op gebruikersidentificatienummer 1.

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

Hier is het resultatenoverzicht.

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