共用方式為


SUSER_SNAME (Transact-SQL)

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

適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。

主題連結圖示 Transact-SQL 語法慣例

語法

SUSER_SNAME ( [ server_user_sid ] ) 

引數

  • server_user_sid

    適用於:SQL Server 2008 至 SQL Server 2014。

    這是選擇性的登入安全性識別碼。 server_user_sid 是 varbinary(85)。 server_user_sid 可以是任何 SQL Server 登入或 Microsoft Windows 使用者或群組的安全性識別碼。 如果未指定 server_user_sid,就會傳回目前使用者的詳細資訊。 如果參數包含 NULL 一詞,就會傳回 NULL。

傳回類型

nvarchar(128)

備註

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

當呼叫 SUSER_SNAME 時,如果未設定引數,它會傳回目前安全性內容的名稱。 當利用 EXECUTE AS,在已切換內容的批次內,在未設定引數的情況下呼叫 SUSER_SNAME 時,它會傳回模擬內容的名稱。 當從模擬內容呼叫時,ORIGINAL_LOGIN 會傳回原始內容的名稱。

Windows Azure SQL 資料庫 備註

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

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

範例

A.使用 SUSER_SNAME

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

SELECT SUSER_SNAME();
GO

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

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

適用於:SQL Server 2008 至 SQL Server 2014。

SELECT SUSER_SNAME(0x010500000000000515000000a065cf7e784b9b5fe77c87705a2e0000);
GO

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

下列範例會利用 SUSER_SNAME 來做為 DEFAULT 陳述式中的 CREATE TABLE 條件約束。

USE AdventureWorks2012;
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 時,這個範例會顯示 SUSER_SNAME 的行為。

適用於:SQL Server 2008 至 SQL Server 2014。

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

以下是結果。

sa

WanidaBenShoof

sa

請參閱

參考

SUSER_SID (Transact-SQL)

sys.server_principals (Transact-SQL)

EXECUTE AS (Transact-SQL)

概念

主體 (Database Engine)