適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric 中的 SQL 資料庫
傳回指定登入名稱的安全性識別碼 (SID)。
語法
SUSER_SID ( [ 'login' ] [ , Param2 ] )
引數
'* 登錄 *'
適用於:SQL Server 2008 (10.0.x) 和更新版本
使用者的登入名稱。
login 為 sysname。 選擇性的 login 可為 SQL Server 登入或 Microsoft Windows 使用者或群組。 若沒有指定 login,則會傳回目前安全性內容的相關資訊。 如果參數包含 NULL, SUSER_SID 則會傳回 NULL。
Param2
適用於:SQL Server 2012 (11.x) 和更新版本
指定是否要驗證登入名稱。 Param2 的類型為 int 且為選擇性。 當 Param2 為 0 時,不會驗證登入名稱。 當 Param2 未指定為 0 時,則會驗證 Window 登入名稱,確認其與儲存在 SQL Server 中的登入名稱完全相同。
傳回類型
varbinary(85)
備註
SUSER_SID可作為 或 DEFAULT中的ALTER TABLE約束。CREATE TABLE
SUSER_SID 可用於選取清單、子句, WHERE 以及任何允許運算式的地方。
SUSER_SID 必須一律後面接著括弧,即使未指定參數也一樣。
在沒有引數的情況下呼叫時, SUSER_SID 會傳回目前安全性內容的 SID。 在已切換內容的批次內呼叫沒有引數時,會傳 EXECUTE AS回模擬內容的 SID SUSER_SID 。 從模擬內容呼叫時, SUSER_SID(ORIGINAL_LOGIN()) 會傳回原始內容的 SID。
當 SQL Server 定序和 Windows 定序不同時,當 SQL Server 和 Windows 以不同的格式儲存登入時, SUSER_SID 可能會失敗。 例如,如果 Windows 電腦 TestComputer 具有登入, User 而 SQL Server 將登入儲存為 TESTCOMPUTER\User,則登入 TestComputer\User 的查閱可能無法正確解析登入名稱。 若要略過登入名稱的驗證作業,請使用 Param2。 不同的定序通常是 SQL Server 錯誤 15401 的原因: Windows NT user or group '%s' not found. Check the name again.
Azure SQL 資料庫、Fabric 中的 SQL 資料庫 備註
SUSER_SID 一律傳回目前安全性內容的登入 SID。 使用 sys.database_principals 取得不同登入的 SID。
陳述 SUSER_SID 式不支援透過 使用 EXECUTE AS模擬的安全性內容來執行。
範例
A. 下載 SUSER_SID
下列範例會傳回目前安全性內容的安全性識別碼 (SID)。
SELECT SUSER_SID();
B. 使用具有特定登入的SUSER_SID
適用於:SQL Server 2012 (11.x) 和更新版本
下列範例會傳回 SQL Server sa 登入的安全性識別碼。
SELECT SUSER_SID('sa');
GO
C. 將SUSER_SID與 Windows 使用者名稱搭配使用
適用於:SQL Server 2012 (11.x) 和更新版本
下列範例會傳回 Windows 使用者 London\Workstation1 的安全性識別碼。
SELECT SUSER_SID('London\Workstation1');
GO
D. 使用 SUSER_SID 作為 DEFAULT 約束
下列範例會利用 SUSER_SID 來做為 DEFAULT 陳述式中的 CREATE TABLE 條件約束。
USE AdventureWorks2022;
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
E. 將 Windows 登入名稱與儲存在 SQL Server 中的登入名稱進行比較
適用於:SQL Server 2012 (11.x) 和更新版本
下列範例示範如何使用 Param2 從 Windows 取得 SID,並使用該 SID 作為 SUSER_SNAME 函式的輸入。 此範例以 Windows 中的儲存格式 (TestComputer\User) 提供登入,並以 SQL Server 中的儲存格式 (TESTCOMPUTER\User) 傳回登入。
SELECT SUSER_SNAME(SUSER_SID('TestComputer\User', 0));