SYSTEM_USER (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
既定値が指定されていない場合、現在のユーザー用のシステム定義の値をテーブルに挿入することができます。
構文
SYSTEM_USER
戻り値の型
nvarchar(128)
注釈
SYSTEM_USER 関数は、CREATE TABLE および ALTER TABLE ステートメント内で DEFAULT 制約と共に使用できます。 標準的な関数としても使用できます。
ユーザー名とログイン名が異なる場合、SYSTEM_USER ではログイン名が返されます。
現在のユーザーが Windows 認証によって SQL Server にログインされた場合、SYSTEM_USER から、次の形式で Windows ログインの識別名が返されます。DOMAIN\user_login_name。 現在のユーザーが SQL Server 認証によって SQL Server にログインした場合は、SQL Server ログインの識別名が返されます。たとえば、WillisJo
としてログインしたユーザーの場合は WillisJo
が返されます。
SYSTEM_USER では、現在の実行コンテキストの名前が返されます。 EXECUTE AS ステートメントを使用してコンテキストを切り替えた場合、SYSTEM_USER では権限を借用したコンテキストの名前が返されます。
SYSTEM_USER 権限で実行することはできません。
Azure SQL データベース: SYSTEM_USER ステートメントでは、EXECUTE AS での借用したセキュリティ コンテキストを使用した実行はサポートされていません。
例
A. SYSTEM_USER を使用して現在のシステム ユーザー名を返す
次の例では、char
変数を宣言し、SYSTEM_USER
の現在の値をこの変数に格納した後、変数に格納されている値を出力します。
DECLARE @sys_usr CHAR(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current system user is: '+ @sys_usr;
GO
結果セットは次のとおりです。
----------------------------------------------------------
The current system user is: WillisJo
(1 row(s) affected)
B. SYSTEM_USER を DEFAULT 制約と共に使用する
次の例では、テーブルを作成し、SYSTEM_USER
列の DEFAULT
制約として SRep_tracking_user
を使用します。
USE AdventureWorks2022;
GO
CREATE TABLE Sales.Sales_Tracking
(
Territory_id INT IDENTITY(2000, 1) NOT NULL,
Rep_id INT NOT NULL,
Last_sale DATETIME NOT NULL DEFAULT GETDATE(),
SRep_tracking_user VARCHAR(30) NOT NULL DEFAULT SYSTEM_USER
);
GO
INSERT Sales.Sales_Tracking (Rep_id)
VALUES (151);
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '19980515');
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '19980620');
INSERT Sales.Sales_Tracking (Rep_id)
VALUES (21392);
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '19981130');
GO
次のクエリでは、Sales_Tracking
テーブルのすべての情報を選択します。
SELECT * FROM Sales_Tracking ORDER BY Rep_id;
GO
結果セットは次のとおりです。
Territory_id Rep_id Last_sale SRep_tracking_user
----------- ------ -------------------- ------------------
2000 151 Mar 4 1998 10:36AM ArvinDak
2001 293 May 15 1998 12:00AM ArvinDak
2003 21392 Mar 4 1998 10:36AM ArvinDak
2004 24283 Nov 3 1998 12:00AM ArvinDak
2002 27882 Jun 20 1998 12:00AM ArvinDak
(5 row(s) affected)
例: Azure Synapse Analytics、Analytics Platform System (PDW)
C. SYSTEM_USER を使用して現在のシステム ユーザー名を返す
次の例では、SYSTEM_USER
の現在の値を返します。
SELECT SYSTEM_USER;
参照
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
システム関数 (Transact-SQL)
USER (Transact-SQL)