Sdílet prostřednictvím


USER_NAME (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vrací uživatelské jméno databáze z určeného identifikačního čísla nebo aktuální uživatelské jméno.

Transact-SQL konvence syntaxe

Syntaxe

USER_NAME ( [ ID ] )

Arguments

ID

Identifikační číslo přiřazené uživateli databáze, jak je uvedeno v sys.database_principals. ID je int. Závorky jsou povinné.

Návratové typy

nvarchar(128)

Poznámky

Když je ID vynecháno, předpokládá se aktuální uživatel v aktuálním kontextu. Pokud parametr obsahuje slovoNULL, USER_NAME vrátí .NULL Když USER_NAME je volán bez zadání ID po příkazu EXECUTE AS , vrátí jméno uživatele, USER_NAME za kterého se vydával. Pokud principal Windows přistupuje k databázi prostřednictvím členství ve skupině, USER_NAME vrací jméno principala Windows místo skupiny.

Ačkoli je tato USER_NAME() funkce podporována v Azure SQL Database, použití EXECUTE AS USER = USER_NAME(n) není podporováno v Azure SQL Database.

Examples

A. Použijte USER_NAME() k identifikaci uživatelského ID

Následující příklad vrací uživatelské jméno pro uživatelské ID 13, jak je uvedeno v sys.database_principals.

SELECT USER_NAME(13);  
GO  

B. Používejte USER_NAME bez dokladu totožnosti

Následující příklad najde jméno aktuálního uživatele bez zadání ID.

SELECT USER_NAME();  
GO  

Zde je sada výsledků pro uživatele, který je členem role pevného správce systému.

dbo  

C. Použijte USER_NAME v klauzuli KDE

Následující příklad najde řádek v sys.database_principals, kde je název roven výsledku aplikace systémové funkce USER_NAME na uživatelské identifikační číslo 1.

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

Tady je soubor výsledků.

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

D. Zavolejte USER_NAME během napodobování pomocí EXECUTE AS

Následující příklad ukazuje, jak USER_NAME se chová při napodobování.

EXECUTE AS v současnosti není na Microsoft Fabric podporován.

Upozornění

Při testování s EXECUTE AS, vždy napíšte skript a REVERT , aby následoval.

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

Tady je soubor výsledků.

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

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

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

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

E. Používejte USER_NAME bez dokladu totožnosti

Následující příklad najde jméno aktuálního uživatele bez zadání ID.

SELECT USER_NAME();  

Zde je sada výsledků pro aktuálně přihlášeného uživatele.

User7                              

F. Použijte USER_NAME v klauzuli KDE

Následující příklad najde řádek, ve sysusers kterém je jméno rovno výsledku aplikace systémové funkce USER_NAME na uživatelské identifikační číslo 1.

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

Tady je soubor výsledků.

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