次の方法で共有


USER (Transact-SQL)

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

既定値が指定されていない場合に、現在のユーザーのデータベース ユーザー名に対するシステム定義の値を、テーブルに挿入します。

Transact-SQL 構文表記規則

構文

USER  

戻り値の型

nvarchar(128)

注釈

USER では、USER_NAME システム関数と同じ機能が提供されます。

USER は、CREATE TABLE または ALTER TABLE ステートメントで DEFAULT 制約を指定して実行するか、標準的な関数として使用します。

USER では、常に現在のコンテキストの名前が返されます。 EXECUTE AS ステートメントの後に呼び出した場合は、権限を借用したコンテキストの名前が USER により返されます。

Windows プリンシパルがグループのメンバーシップを使ってデータベースにアクセスした場合、グループの名前ではなく Windows プリンシパルの名前が USER により返されます。

A. USER を使用してデータベース ユーザー名を返す

次の例では、変数を char 型として宣言し、USER の現在値をこの変数に割り当てた後、テキストの説明を付けてこの変数を出力します。

DECLARE @usr CHAR(30)  
SET @usr = user  
SELECT 'The current user''s database username is: '+ @usr  
GO  

結果セットは次のとおりです。

-----------------------------------------------------------------------  
The current user's database username is: dbo  
 
(1 row(s) affected)

B. USER を DEFAULT 制約と共に使用する

次の例では、sales 行の販売員に対する USER 制約として DEFAULT を使用し、テーブルを作成します。

USE AdventureWorks2022;  
GO  
CREATE TABLE inventory22  
(  
 part_id INT IDENTITY(100, 1) NOT NULL,  
 description VARCHAR(30) NOT NULL,  
 entry_person VARCHAR(30) NOT NULL DEFAULT USER   
)  
GO  
INSERT inventory22 (description)  
VALUES ('Red pencil')  
INSERT inventory22 (description)  
VALUES ('Blue pencil')  
INSERT inventory22 (description)  
VALUES ('Green pencil')  
INSERT inventory22 (description)  
VALUES ('Black pencil')  
INSERT inventory22 (description)  
VALUES ('Yellow pencil')  
GO  

次は、inventory22 テーブルからすべての情報を選択するクエリです。

SELECT * FROM inventory22 ORDER BY part_id;  
GO  

次に結果セットを示します。entry-person の値に注意してください。

part_id     description                    entry_person
----------- ------------------------------ -------------------------
100         Red pencil                     dbo
101         Blue pencil                    dbo
102         Green pencil                   dbo
103         Black pencil                   dbo
104         Yellow pencil                  dbo
 
(5 row(s) affected)

C. USER を EXECUTE AS と組み合わせて使用する

次の例では、権限を借用したセッションを内部で呼び出すときの、USER の動作を示します。

SELECT USER;  
GO  
EXECUTE AS USER = 'Mario';  
GO  
SELECT USER;  
GO  
REVERT;  
GO  
SELECT USER;  
GO  

結果セットは次のとおりです。

DBO
Mario
DBO

参照

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
セキュリティ関数 (Transact-SQL)
SESSION_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
USER_NAME (Transact-SQL)