次の方法で共有


CURRENT_USER (Transact-SQL)

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

この関数によって、現在のユーザーの名前が返されます。 この関数は USER_NAME() に相当します。

Transact-SQL 構文表記規則

構文

CURRENT_USER  

戻り値の型

sysname

解説

CURRENT_USER によって、現在のセキュリティ コンテキストの名前が返されます。 EXECUTE AS を呼び出してコンテキストを切り替えた後に CURRENT_USER が実行された場合、CURRENT_USER によって、偽装コンテキストの名前が返されます。 Windows プリンシパルがグループのメンバーシップを使ってデータベースにアクセスした場合、CURRENT_USER はグループの名前ではなく Windows プリンシパルの名前を返します。

現在のユーザーのログインを返す方法については、「SUSER_NAME (Transact-SQL)」と「SYSTEM_USER (Transact-SQL)」を参照してください。

A. CURRENT_USER を使用して現在のユーザー名を返す

この例では、現在のユーザー名を返します。

SELECT CURRENT_USER;  
GO  

B. DEFAULT 制約として CURRENT_USER を使用する

この例では、sales 行の order_person 列に対する DEFAULT 制約として CURRENT_USER を使用するテーブルを作成します。

USE AdventureWorks2022;  
GO  
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES  
      WHERE TABLE_NAME = 'orders22')  
   DROP TABLE orders22;  
GO  
SET NOCOUNT ON;  
CREATE TABLE orders22  
(  
order_id int IDENTITY(1000, 1) NOT NULL,
cust_id  int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
order_amt money NOT NULL,
order_person char(30) NOT NULL DEFAULT CURRENT_USER
);  
GO  

この例では、テーブルにレコードが挿入されます。 Wanida という名前のユーザーによってこれらのステートメントが実行されます。

INSERT orders22 (cust_id, order_amt)  
VALUES (5105, 577.95);  
GO  
SET NOCOUNT OFF;  
GO  

このクエリでは、orders22 テーブルからすべての情報が選択されます。

SELECT * FROM orders22;  
GO  

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

order_id    cust_id     order_date           order_amt    order_person
----------- ----------- -------------------- ------------ ------------
1000        5105        2005-04-03 23:34:00  577.95       Wanida
  
(1 row(s) affected)

C: 権限を借用したコンテキストから CURRENT_USER を使用する

この例では、ユーザー Wanida が次の Transact-SQL コードを実行し、ユーザー 'Arnalfo' になりすまします。

SELECT CURRENT_USER;  
GO  
EXECUTE AS USER = 'Arnalfo';  
GO  
SELECT CURRENT_USER;  
GO  
REVERT;  
GO  
SELECT CURRENT_USER;  
GO  

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

Wanida
Arnalfo
Wanida

関連項目

USER_NAME (Transact-SQL)
SYSTEM_USER (Transact-SQL)
sys.database_principals (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
システム関数 (Transact-SQL)