CURRENT_USER (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
この関数によって、現在のユーザーの名前が返されます。 この関数は USER_NAME()
に相当します。
構文
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)