SUSER_SID (Transact-SQL)

傳回指定登入名稱的安全性識別碼 (SID)。

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

語法

SUSER_SID ( [ 'login' ] [ , Param2 ] ) 

引數

  • 'login'
    這是使用者的登入名稱。login 是 sysname。login 是選擇性的,它可以是 SQL Server 登入或 Microsoft Windows 使用者或群組。如果未指定 login,就會傳回目前安全性內容的相關資訊。

  • Param2
    指定是否驗證登入名稱。Param2 是 int 類型,而且是選擇性的。當 Param2 為 0 時,不會驗證登入名稱。當 Param2 並非指定為 0 時,會確認 Windows 登入名稱與儲存在 SQL Server 中的登入名稱完全相同。

傳回類型

varbinary(85)

備註

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

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

當 SQL Server 定序與 Windows 定序不同時,如果 SQL Server 和 Windows 以不同的格式儲存登入,SUSER_SID 可能會失敗。例如,如果 Windows 電腦 TestComputer 具有登入 User,而 SQL Server 將該登入儲存為 TESTCOMPUTER\User,則查閱 TestComputer\User 登入時可能無法正確地解析登入名稱。若要略過登入名稱的驗證作業,請使用 Param2。

範例

A. 使用 SUSER_SID

下列範例會傳回 SQL Serversa 登入的安全性識別碼。

SELECT SUSER_SID('sa');
GO

B. 搭配 Windows 使用者名稱使用 SUSER_SID

下列範例會傳回 Windows 使用者 London\Workstation1 的安全性識別碼。

SELECT SUSER_SID('London\Workstation1');
GO

C. 利用 SUSER_SID 來做為 DEFAULT 條件約束

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

USE AdventureWorks;
GO
CREATE TABLE sid_example
(
login_sid   varbinary(85) DEFAULT SUSER_SID(),
login_name  varchar(30) DEFAULT SYSTEM_USER,
login_dept  varchar(10) DEFAULT 'SALES',
login_date  datetime DEFAULT GETDATE()
) 
GO
INSERT sid_example DEFAULT VALUES
GO

D. 比較 Windows 登入名稱與儲存在 SQL Server 中的登入名稱

下列範例顯示如何使用 Param2 從 Windows 取得 SID,並使用該 SID 做為 SUSER_SNAME 函數的輸入。此範例以 Windows 中的儲存格式 (TestComputer\User) 提供登入,並以 SQL Server 中的儲存格式 (TESTCOMPUTER\User) 傳回登入。

SELECT SUSER_SNAME(SUSER_SID('TestComputer\User', 0)) ;

變更記錄

更新的內容

已在<語法>和<引數>章節加入 Param2。