USER_NAME (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲
從指定的識別碼或目前的用戶名稱傳回資料庫用戶名稱。
語法
USER_NAME ( [ ID ] )
引數
識別碼
與資料庫使用者相關聯的標識碼,如sys.database_principals所示。 標識碼 為 int。需要括弧。
傳回類型
nvarchar(128)
備註
當省略標識符時,會假設目前內容中的目前使用者。 如果 參數包含 這個字 NULL
, USER_NAME
將會傳回 NULL
。 呼叫 時USER_NAME
,而不指定 語句之後EXECUTE AS
的標識符,USER_NAME
傳回模擬用戶的名稱。 如果 Windows 主體透過群組中的成員資格存取資料庫, USER_NAME
則傳回 Windows 主體的名稱,而不是群組。
USER_NAME()
雖然 Azure SQL 資料庫 支援函式,但 Azure SQL 資料庫 不支援使用 EXECUTE AS USER = USER_NAME(n)
。
範例
A. 使用 USER_NAME() 來識別使用者標識碼
下列範例會傳回使用者標識碼13
的用戶名稱,如sys.database_principals所示。
SELECT USER_NAME(13);
GO
B. 不使用標識碼USER_NAME
下列範例不指定識別碼來尋找目前使用者的名稱。
SELECT USER_NAME();
GO
使用者是系統管理員 (sysadmin) 固定伺服器角色成員的結果集如下:
dbo
C. 在 WHERE 子句中使用USER_NAME
下列範例會尋找 中的數據 sys.database_principals
列,其中的名稱等於將系統函 USER_NAME
式套用至使用者標識碼 1
的結果。
SELECT name FROM sys.database_principals WHERE name = USER_NAME(1);
GO
結果集如下所示。
name
------------------------------
dbo
(1 row(s) affected)
D. 使用 EXECUTE AS 模擬期間呼叫USER_NAME
下列範例會顯示 USER_NAME
在模擬期間的行為方式。
EXECUTE AS
目前不支援 Microsoft Fabric。
警告
使用 EXECUTE AS
進行測試時,請一律編寫要遵循的腳本 REVERT
。
SELECT USER_NAME();
GO
EXECUTE AS USER = 'Zelig';
GO
SELECT USER_NAME();
GO
REVERT;
GO
SELECT USER_NAME();
GO
結果集如下所示。
-------------
dbo
-------------
Zelig
-------------
dbo
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
E. 不使用標識碼USER_NAME
下列範例不指定識別碼來尋找目前使用者的名稱。
SELECT USER_NAME();
以下為目前登入使用者的結果集。
User7
F. 在 WHERE 子句中使用USER_NAME
下列範例會在 sysusers
中尋找資料列,這個資料列名稱等於套用系統函數 USER_NAME
至使用者識別碼 1
所得的結果。
SELECT name FROM sysusers WHERE name = USER_NAME(1);
結果集如下所示。
name
------------------------------
User7