Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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