SESSION_USER (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
SESSION_USER では現在のデータベースに含まれる現在のコンテキストのユーザー名が返されます。
構文
SESSION_USER
戻り値の型
nvarchar(128)
注釈
SESSION_USER は、DEFAULT 制約と共に CREATE TABLE または ALTER TABLE ステートメント内で使用するか、標準の関数として使用します。 SESSION_USER は、既定値が指定されていなければテーブルに挿入できます。 この関数は引数を取りません。 SESSION_USER はクエリで使用できます。
コンテキスト切り替え後に SESSION_USER が呼び出された場合、SESSION_USER では借用したコンテキストのユーザー名が返されます。
例
A. SESSION_USER を使用して現在のセッションのユーザー名を返す
次の例では、変数を nchar
型として宣言し、SESSION_USER
の現在値をこの変数に割り当てた後、テキストの説明と共にこの変数を出力します。
DECLARE @session_usr NCHAR(30);
SET @session_usr = SESSION_USER;
SELECT 'This session''s current user is: '+ @session_usr;
GO
セッション ユーザーが Surya
の場合の結果セットは次のとおりです。
--------------------------------------------------------------
This session's current user is: Surya
(1 row(s) affected)
B. SESSION_USER を DEFAULT 制約と共に使用する
次の例では、荷物の受領記録者の名前に対し、SESSION_USER
を DEFAULT
制約として使用するテーブルを作成します。
USE AdventureWorks2022;
GO
CREATE TABLE deliveries3
(
order_id INT IDENTITY(5000, 1) NOT NULL,
cust_id INT NOT NULL,
order_date SMALLDATETIME NOT NULL DEFAULT GETDATE(),
delivery_date SMALLDATETIME NOT NULL DEFAULT
DATEADD(dd, 10, GETDATE()),
received_shipment NCHAR(30) NOT NULL DEFAULT SESSION_USER
);
GO
テーブルに追加されたレコードに対して、現在のユーザーのユーザー名が設定されます。 この例では、Wanida
、Sylvester
、Alejandro
が荷物の受領を確認します。 EXECUTE AS
を使用してユーザー コンテキストを切り替えることでも、同様の機能を実現できます。
EXECUTE AS USER = 'Wanida'
INSERT deliveries3 (cust_id)
VALUES (7510);
INSERT deliveries3 (cust_id)
VALUES (7231);
REVERT;
EXECUTE AS USER = 'Sylvester'
INSERT deliveries3 (cust_id)
VALUES (7028);
REVERT;
EXECUTE AS USER = 'Alejandro'
INSERT deliveries3 (cust_id)
VALUES (7392);
INSERT deliveries3 (cust_id)
VALUES (7452);
REVERT;
GO
次のクエリでは、deliveries3
テーブルからすべての情報を選択します。
SELECT order_id AS 'Order #', cust_id AS 'Customer #',
delivery_date AS 'When Delivered', received_shipment
AS 'Received By'
FROM deliveries3
ORDER BY order_id;
GO
結果セットは次のとおりです。
Order # Customer # When Delivered Received By
-------- ---------- ------------------- -----------
5000 7510 2005-03-16 12:02:14 Wanida
5001 7231 2005-03-16 12:02:14 Wanida
5002 7028 2005-03-16 12:02:14 Sylvester
5003 7392 2005-03-16 12:02:14 Alejandro
5004 7452 2005-03-16 12:02:14 Alejandro
(5 row(s) affected)
例: Azure Synapse Analytics、Analytics Platform System (PDW)
C. SESSION_USER を使用して現在のセッションのユーザー名を返す
次の例では、現在のセッションのセッション ユーザーを返します。
SELECT SESSION_USER;
参照
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
システム関数 (Transact-SQL)
USER (Transact-SQL)
USER_NAME (Transact-SQL)