Delen via


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, USER_NAME zal de terugkering NULLgevenNULL. 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. Roep USER_NAME aan 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