Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza 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