共用方式為


SUSER_SNAME (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控實例Azure Synapse Analytics分析平台系統 (PDW)Microsoft Fabric 中的 SQL 分析端點倉儲 及 Microsoft Fabric Preview 中的 SQL 資料庫

傳回與安全性識別碼 (SID) 相關聯的登入名稱。

Transact-SQL 語法慣例

語法

SUSER_SNAME ( [ server_user_sid ] )

引數

server_user_sid

選用的登入安全性識別碼。 server_user_sidvarbinary(85)server_user_sid 可以是任何 SQL Server 登入或 Microsoft Windows 使用者或群組的安全性識別碼。 sid請參閱 或sys.server_principals目錄檢視中的數據sys.sql_logins行。 如果未指定 server_user_sid,則會傳回目前使用者的相關資訊。 如果 參數包含 這個字 NULLSUSER_SNAME 則會傳 NULL回 。

Microsoft Fabric 預覽版中的 Azure SQL 資料庫或 SQL 資料庫不支援server_user_sid

傳回類型

nvarchar(128)

備註

SUSER_SNAME可作為 或 CREATE TABLE中的ALTER TABLE約束。DEFAULT SUSER_SNAME 可用於選取清單、子句, WHERE 以及任何允許運算式的地方。 SUSER_SNAME 後面一律必須接著括號,即使未指定任何參數,也是如此。

當呼叫 SUSER_SNAME 時,如果未設定引數,其會傳回目前安全性內容的名稱。 在批次中呼叫時,不使用 已使用 EXECUTE AS切換內容的自變數時, SUSER_SNAME 會傳回模擬內容的名稱。 從模擬內容呼叫時,ORIGINAL_LOGIN 會傳回原始內容的名稱。

Azure SQL 資料庫、Fabric 中的 SQL 資料庫 備註

SUSER_SNAME 一律傳回目前安全性內容的登入名稱。

陳述 SUSER_SNAME 式不支援透過 使用 EXECUTE AS模擬的安全性內容來執行。

SUSER_SNAME 不支援 server_user_id 引數。

範例

A. 使用 SUSER_SNAME

下列範例會傳回目前安全性內容的登入名稱。

SELECT SUSER_SNAME();
GO

B. 搭配 Windows 使用者安全性識別碼使用 SUSER_SNAME

下列範例會傳回與 Windows 安全性識別碼相關聯的登入名稱。

SELECT SUSER_SNAME(0x010500000000000515000000a065cf7e784b9b5fe77c87705a2e0000);
GO

C. 使用 SUSER_SNAME 做為 DEFAULT 條件約束

下列範例會使用 SUSER_SNAMEDEFAULT 為陳述式中的 CREATE TABLE 條件約束。

USE AdventureWorks2022;
GO

CREATE TABLE sname_example (
    login_sname SYSNAME DEFAULT SUSER_SNAME(),
    employee_id UNIQUEIDENTIFIER DEFAULT NEWID(),
    login_date DATETIME DEFAULT GETDATE()
    );
GO

INSERT sname_example DEFAULT
VALUES;
GO

D. 結合 EXECUTE AS 呼叫 SUSER_SNAME

從模擬內容中呼叫時,這個範例會顯示 SUSER_SNAME 的行為。

SELECT SUSER_SNAME();
GO

EXECUTE AS LOGIN = 'WanidaBenShoof';
SELECT SUSER_SNAME();

REVERT;
GO

SELECT SUSER_SNAME();
GO

以下是結果。

sa
WanidaBenShoof
sa

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

E. 使用 SUSER_SNAME

下列範例會傳回安全性識別碼值為 0x01 的登入名稱。

SELECT SUSER_SNAME(0x01);
GO

F. 傳回目前登入

下列範例會傳回目前登入的登入名稱。

SELECT SUSER_SNAME() AS CurrentLogin;
GO