SYSTEM_USER (T-SQL)

Berlaku untuk:SQL ServerAzureSQL Managed InstanceAzureSynapse Analytics

Memungkinkan nilai yang disediakan sistem untuk login saat ini dimasukkan ke dalam tabel ketika tidak ada nilai default yang ditentukan.

Konvensi sintaks transact-SQL

Sintaks

SYSTEM_USER  

Jenis Kembalian

nvarchar(128)

Keterangan

Anda dapat menggunakan fungsi SYSTEM_USER dengan DEFAULT batasan dalam CREATE TABLE pernyataan dan ALTER TABLE . Anda juga dapat menggunakannya sebagai fungsi standar apa pun.

Jika nama pengguna dan nama masuk berbeda, SYSTEM_USER mengembalikan nama login.

Jika pengguna saat ini masuk ke SQL Server dengan menggunakan Autentikasi Windows, SYSTEM_USER mengembalikan nama identifikasi masuk Windows dalam formulir: DOMAIN\user_login_name. Namun, jika pengguna saat ini masuk ke SQL Server dengan menggunakan Autentikasi SQL Server, SYSTEM_USER mengembalikan nama identifikasi masuk SQL Server, seperti WillisJo untuk pengguna yang masuk sebagai WillisJo.

SYSTEM_USER mengembalikan nama konteks yang sedang dijalankan. Jika EXECUTE AS pernyataan telah digunakan untuk mengganti konteks, SYSTEM_USER mengembalikan nama konteks yang ditiru.

Anda tidak bisa EXECUTE AS SYSTEM_USER.

Azure SQL Database: Pernyataan SYSTEM_USER tidak mendukung eksekusi menggunakan konteks keamanan yang ditiru melalui EXECUTE AS.

Contoh

J. Menggunakan SYSTEM_USER untuk mengembalikan nama pengguna sistem saat ini

Contoh berikut mendeklarasikan char variabel, menyimpan nilai SYSTEM_USER saat ini dalam variabel, lalu mencetak nilai yang disimpan dalam variabel.

DECLARE @sys_usr CHAR(30);  
SET @sys_usr = SYSTEM_USER;  
SELECT 'The current system user is: '+ @sys_usr;  
GO  

Berikut set hasilnya.

----------------------------------------------------------
The current system user is: WillisJo

(1 row(s) affected)

B. Menggunakan SYSTEM_USER dengan DEFAULT batasan

Contoh berikut membuat tabel dengan SYSTEM_USER sebagai DEFAULT batasan SRep_tracking_user untuk kolom.

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  

Kueri berikut untuk memilih semua informasi dari Sales_Tracking tabel:

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

Berikut set hasilnya.

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)

Contoh: Azure Synapse Analytics

C. Menggunakan SYSTEM_USER untuk mengembalikan nama pengguna sistem saat ini

Contoh berikut mengembalikan nilai saat ini dari SYSTEM_USER.

SELECT SYSTEM_USER;