SYSTEM_USER (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

既定値が指定されていない場合、現在のユーザー用のシステム定義の値をテーブルに挿入することができます。

Transact-SQL 構文表記規則

構文

SYSTEM_USER  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

戻り値の型

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)