次の方法で共有


SUSER_SID (Transact-SQL)

指定されたログイン名のセキュリティ ID 番号 (SID) を返します。

適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)、Windows Azure SQL データベース (初回のリリースから現在のバージョンまで)

トピック リンク アイコン *Transact-SQL 構文表記規則

構文

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

引数

  • ' login '

    適用対象: SQL Server 2008 から SQL Server 2014。

    ユーザーのログイン名を指定します。 login のデータ型は sysname です。 login は省略可能で、SQL Server ログインか、Microsoft Windows ユーザーまたはグループを指定できます。 login の指定を省略すると、現在のセキュリティ コンテキストについての情報が返されます。 パラメーターに "NULL" という語が含まれていると、NULL が返されます。

  • Param2

    適用対象: SQL Server 2012 から SQL Server 2014。

    ログイン名を検証するかどうかを指定します。 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 を使用します。照合順序が異なると、SQL Server エラー 15401 の原因となることがしばしばあります。

Windows NT user or group '%s' not found. Check the name again.

使用例

A. SUSER_SID を使用する

次の例では、現在のセキュリティ コンテキストのセキュリティ ID 番号 (SID) を返します。

SELECT SUSER_SID('sa');

B. SUSER_SID を特定のログインと共に使用する

次の例では、SQL Server における sa というログインのセキュリティ ID 番号を返します。

適用対象: SQL Server 2012 から SQL Server 2014。

SELECT SUSER_SID('sa');
GO

C. SUSER_SID を Windows ユーザー名と共に使用する

次の例では、Windows ユーザーである London\Workstation1 のセキュリティ ID 番号を返します。

適用対象: SQL Server 2012 から SQL Server 2014。

SELECT SUSER_SID('London\Workstation1');
GO

D. SUSER_SID を DEFAULT 制約として使用する

次の例では、CREATE TABLE ステートメントで SUSER_SID を DEFAULT 制約として使用しています。

USE AdventureWorks2012;
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 に格納されたログイン名を比較する

次の例は、Param2 を使用して Windows から SID を取得する方法を示しています。この例では、その SID を SUSER_SNAME 関数への入力として使用しています。 Windows に格納された形式のログイン (TestComputer\User) を指定し、SQL Server に格納された形式のログイン (TESTCOMPUTER\User) を取得しています。

適用対象: SQL Server 2012 から SQL Server 2014。

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

関連項目

参照

ORIGINAL_LOGIN (Transact-SQL)

CREATE TABLE (SQL Server)

binary と varbinary (Transact-SQL)

システム関数 (Transact-SQL)