USER_NAME (Transact-SQL)
指定した識別番号から、データベース ユーザー名を返します。
構文
USER_NAME ( [ id ] )
引数
- id
データベース ユーザーに関連付けられている識別番号を指定します。idのデータ型は int です。かっこで囲む必要があります。
戻り値の型
nvarchar(128)
解説
id を省略した場合は、現在のコンテキストの現在のユーザーであると見なされます。EXECUTE AS ステートメントの実行後に id を指定せずに USER_NAME を呼び出した場合、USER_NAME では権限を借用したユーザーの名前が返されます。Windows プリンシパルがグループのメンバシップを使ってデータベースにアクセスした場合、グループの名前ではなく Windows プリンシパルの名前が返されます。
例
A. USER_NAME を使用する
次の例では、ユーザー ID 13
のユーザー名を返します。
SELECT USER_NAME(13);
GO
B. ID を指定せずに USER_NAME を使用する
次の例では、ID を指定せずに、現在のユーザーの名前を検索します。
SELECT USER_NAME();
GO
次に、ユーザーが sysadmin 固定サーバー ロールのメンバである場合の結果セットを示します。
------------------------------
dbo
(1 row(s) affected)
C. WHERE 句で USER_NAME を使用する
次の例では、sysusers
の行を検索します。検索される名前は、ユーザー識別番号 1
に対してシステム関数 USER_NAME
を適用した結果と同じになります。
SELECT name FROM sysusers WHERE name = USER_NAME(1);
GO
以下に結果セットを示します。
name
------------------------------
dbo
(1 row(s) affected)
D. EXECUTE AS での権限借用中に USER_NAME を呼び出す
次の例では、権限借用中の USER_NAME
の動作を示します。
SELECT USER_NAME();
GO
EXECUTE AS USER = 'Zelig';
GO
SELECT USER_NAME();
GO
REVERT;
GO
SELECT USER_NAME();
GO
以下に結果セットを示します。
DBO
Zelig
DBO
参照
関連項目
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
システム関数 (Transact-SQL)
SYSTEM_USER (Transact-SQL)