Megosztás a következőn keresztül:


USER_NAME (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Egy megadott azonosító számból vagy a jelenlegi felhasználónévből származó adatbázis felhasználónevet ad vissza.

Transact-SQL szintaxis konvenciók

Szemantika

USER_NAME ( [ ID ] )

Arguments

Azonosító

Az adatbázis-felhasználóhoz tartozó azonosító szám, ahogy az sys.database_principals-ben szerepel. Az azonosítóint. A zárójelek szükségesek.

Visszatérési típusok

nvarchar(128)

Megjegyzések

Ha az azonosítót kihagyjuk, feltételezzük a jelenlegi felhasználót az aktuális kontextusban. Ha a paraméter tartalmazza a NULLszót, USER_NAME akkor visszaadja NULL-t . Amikor USER_NAME azonosító megadás nélkül hívják meg egy EXECUTE AS kijelentés után, USER_NAME visszaadja az imidentált felhasználó nevét. Ha egy Windows vezető a csoporttagság révén fér hozzá az adatbázishoz, USER_NAME akkor a Windows fő nevét adja vissza a csoport helyett.

Bár a USER_NAME() funkció támogatja az Azure SQL Database-en, az Azure SQL Database-ben EXECUTE AS USER = USER_NAME(n) nem támogatott.

Példák

A. Használj USER_NAME() felhasználói azonosító azonosításához

A következő példa adja vissza a felhasználói azonosító 13felhasználónevét, ahogy azt a sys.database_principals-ben felsoroljuk.

SELECT USER_NAME(13);  
GO  

B. Használd USER_NAME azonosító nélkül

A következő példa megtalálja a jelenlegi felhasználó nevét azonosító megadás nélkül.

SELECT USER_NAME();  
GO  

Íme az eredménykészlet egy olyan felhasználó számára, aki a rendszert szolgáltató fix szerver szerepének tagja.

dbo  

C. Használd USER_NAME a WHERE záradékban

A következő példa megtalálja azt a sort, amelyben sys.database_principalsa név megegyezik azzal, hogy a rendszerfüggvényt USER_NAME a felhasználói azonosító számra 1alkalmazzuk .

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

Itt van az eredmények összessége.

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

D. Hívd USER_NAME-t az EXECUTE AS-szal való beazonosítás közben

A következő példa bemutatja, hogyan USER_NAME viselkedik az utánzás során.

EXECUTE AS jelenleg nem támogatott a Microsoft Fabric-en.

Caution

Teszteléskor EXECUTE ASmindig írj egy REVERT a szkriptet követni.

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

Itt van az eredmények összessége.

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

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

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

Példák: Azure Synapse Analytics and Analytics Platform System (PDW)

E. Használd USER_NAME azonosító nélkül

A következő példa megtalálja a jelenlegi felhasználó nevét azonosító megadás nélkül.

SELECT USER_NAME();  

Íme az eredményhalmaza egy jelenleg bejelentkezett felhasználó számára.

User7                              

F. Használd USER_NAME a WHERE záradékban

A következő példa megtalálja azt a sort sysusers , amelyben a név megegyezik azzal, hogy a rendszerfüggvényt USER_NAME a felhasználói azonosító számra 1alkalmazzuk .

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

Itt van az eredmények összessége.

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