Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-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