適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
Microsoft Fabric プレビューの SQL データベース
セキュリティ ID 番号 (SID) に関連付けられているログイン名を返します。
構文
SUSER_SNAME ( [ server_user_sid ] )
引数
server_user_sid
オプションのログイン セキュリティ ID 番号です。
server_user_sid は varbinary(85) です。
server_user_sid には、任意の SQL Server ログイン名または Microsoft Windows ユーザーやグループのセキュリティ ID 番号を指定できます。
sid または sys.server_principals カタログ ビューの sys.sql_logins 列を参照します。
server_user_sid の指定を省略すると、現在のユーザーの情報が返されます。 パラメーターに NULL という語が含まれていると、SUSER_SNAME は NULL を返します。
server_user_sid は、Microsoft Fabric プレビューの Azure SQL Database または SQL データベースではサポートされていません。
の戻り値の型 :
nvarchar(128)
注釈
SUSER_SNAMEは、ALTER TABLEまたはCREATE TABLEのDEFAULT制約として使用できます。
SUSER_SNAME は、選択リスト、 WHERE 句、および式が許可されている任意の場所で使用できます。
SUSER_SNAME の後には、パラメーターを指定しない場合も含め、常にかっこが必要です。
SUSER_SNAME を引数なしで呼び出すと、現在のセキュリティ コンテキストの名前が返されます。
EXECUTE AS を使用してコンテキストを切り替えたバッチ内で引数なしで呼び出すと、SUSER_SNAME は偽装されたコンテキストの名前が返されます。 権限を借用したコンテキストから ORIGINAL_LOGIN を呼び出すと、元のコンテキストの名前が返されます。
Azure SQL Database、Fabric の SQL データベースに関する解説
SUSER_SNAME は、常に現在のセキュリティ コンテキストのログイン名を返します。
SUSER_SNAME ステートメントは、EXECUTE ASを介して偽装されたセキュリティ コンテキストを使用した実行をサポートしていません。
SUSER_SNAME は、server_user_id 引数はサポートされていません。
例
A. SUSER_SNAME を使用する
次の例では、現在のセキュリティ コンテキストのログイン名が返されます。
SELECT SUSER_SNAME();
GO
B. SUSER_SNAME を Windows ユーザーのセキュリティ ID と共に使用する
次の例では、Windows セキュリティ ID 番号に関連付けられているログイン名が返されます。
SELECT SUSER_SNAME(0x010500000000000515000000a065cf7e784b9b5fe77c87705a2e0000);
GO
C. SUSER_SNAME を DEFAULT 制約として使用する
次の例では、CREATE TABLE ステートメントのDEFAULT制約としてSUSER_SNAMEを使用します。
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. SUSER_SNAME を EXECUTE AS と組み合わせて呼び出す
この例は、権限を借用したコンテキストから呼び出した場合の 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 を使用する
次の例では、セキュリティ ID 番号が 0x01 のログイン名を返します。
SELECT SUSER_SNAME(0x01);
GO
F. 現在のログインを返す
次の例では、現在のログインのログイン名を返します。
SELECT SUSER_SNAME() AS CurrentLogin;
GO