Udostępnij za pomocą


USER_NAME (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zwraca nazwę użytkownika bazy danych z określonego numeru identyfikacyjnego lub aktualną nazwę użytkownika.

Transact-SQL konwencje składni

Składnia

USER_NAME ( [ ID ] )

Arguments

identyfikator

Numer identyfikacyjny przypisany użytkownikowi bazy danych, wymieniony w sys.database_principals. ID to inteligencja. Nawiasy są wymagane.

Typy zwracane

nvarchar(128)

Uwagi

Gdy ID jest pomijane, przyjmuje się obecnego użytkownika w bieżącym kontekście. Jeśli parametr zawiera słowo NULL, USER_NAME zwróci NULL. Gdy USER_NAME jest wywołany bez podania ID po wyrażeniu EXECUTE AS , USER_NAME zwraca nazwę użytkownika podszywanego pod niego. Jeśli główny użytkownik Windows uzyska dostęp do bazy danych poprzez członkostwo w grupie, USER_NAME zwraca nazwę operatora Windows zamiast grupy.

Chociaż funkcja ta USER_NAME() jest obsługiwana w Azure SQL Database, użycie EXECUTE AS USER = USER_NAME(n) tego nie jest obsługiwane w Azure SQL Database.

Przykłady

A. Użyj USER_NAME() do identyfikacji identyfikatora użytkownika

Poniższy przykład zwraca nazwę użytkownika dla identyfikatora 13użytkownika, jak podano w sys.database_principals.

SELECT USER_NAME(13);  
GO  

B. Używaj USER_NAME bez dowodu tożsamości

Poniższy przykład znajduje nazwę aktualnego użytkownika bez podania ID.

SELECT USER_NAME();  
GO  

Oto zestaw wyników dla użytkownika będącego członkiem stałej roli administratora systemu.

dbo  

C. Użyj USER_NAME w klauzuli GDZIE

Poniższy przykład znajduje wiersz w sys.database_principals, w którym nazwa jest równa efektowi zastosowania funkcji USER_NAME systemowej do numeru 1identyfikacyjnego użytkownika .

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

Oto zestaw wyników.

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

D. Zadzwoń USER_NAME podczas podszywania się pod WYKONAJ AS

Poniższy przykład pokazuje, jak USER_NAME zachowuje się podczas podszywania się.

EXECUTE AS obecnie nie jest obsługiwany w Microsoft Fabric.

Ostrzeżenie

Podczas testowania z EXECUTE AS, zawsze stosuj skrypt a REVERT do podążania.

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

Oto zestaw wyników.

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

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

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

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

E. Używaj USER_NAME bez dowodu tożsamości

Poniższy przykład znajduje nazwę aktualnego użytkownika bez podania ID.

SELECT USER_NAME();  

Oto zestaw wyników dla aktualnie zalogowanego użytkownika.

User7                              

F. Użyj USER_NAME w klauzuli GDZIE

Poniższy przykład pokazuje wiersz, w sysusers którym nazwa jest równa efektowi zastosowania funkcji USER_NAME systemowej do numeru 1identyfikacyjnego użytkownika .

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

Oto zestaw wyników.

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