SUSER_SNAME (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

セキュリティ ID 番号 (SID) に関連付けられているログイン名を返します。

Transact-SQL 構文表記規則

構文

SUSER_SNAME ( [ server_user_sid ] )

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

server_user_sid

オプションのログイン セキュリティ ID 番号です。 server_user_sidvarbinary(85) です。 server_user_sid には、任意の SQL Server ログイン名または Microsoft Windows ユーザーやグループのセキュリティ ID 番号を指定できます。 sys.server_principals または sys.sql_logins カタログ ビューの sid 列を参照します。 server_user_sid の指定を省略すると、現在のユーザーの情報が返されます。 パラメーターに NULL という語が含まれていると、SUSER_SNAMENULL を返します。

Azure SQL Database では server_user_sid はサポートされていません。

の戻り値の型 :

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 に関する注釈

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 制約として使用する

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

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