Bagikan melalui


SESSION_USER (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

SESSION_USER mengembalikan nama pengguna konteks saat ini dalam database saat ini.

Konvensi sintaks transact-SQL

Sintaksis

SESSION_USER  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Jenis Kembalian

nvarchar(128)

Keterangan

Gunakan SESSION_USER dengan batasan DEFAULT dalam pernyataan CREATE TABLE atau ALTER TABLE, atau gunakan sebagai fungsi standar apa pun. SESSION_USER dapat disisipkan ke dalam tabel ketika tidak ada nilai default yang ditentukan. Fungsi ini tidak membutuhkan argumen. SESSION_USER dapat digunakan dalam kueri.

Jika SESSION_USER dipanggil setelah pengalihan konteks, SESSION_USER akan mengembalikan nama pengguna konteks yang ditiru.

Contoh

J. Menggunakan SESSION_USER untuk mengembalikan nama pengguna sesi saat ini

Contoh berikut mendeklarasikan variabel sebagai nchar, menetapkan nilai saat ini ke SESSION_USER variabel tersebut, lalu mencetak variabel dengan deskripsi teks.

DECLARE @session_usr NCHAR(30);  
SET @session_usr = SESSION_USER;  
SELECT 'This session''s current user is: '+ @session_usr;  
GO  

Ini adalah hasil yang ditetapkan ketika pengguna sesi adalah Surya:

--------------------------------------------------------------
This session's current user is: Surya

(1 row(s) affected)

B. Menggunakan SESSION_USER dengan batasan DEFAULT

Contoh berikut membuat tabel yang menggunakan SESSION_USER sebagai DEFAULT batasan untuk nama orang yang merekam tanda terima pengiriman.

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  

Rekaman yang ditambahkan ke tabel akan diberi stempel dengan nama pengguna pengguna saat ini. Dalam contoh ini, Wanida, Sylvester, dan Alejandro verifikasi penerimaan pengiriman. Ini dapat ditimulasi dengan mengalihkan konteks pengguna dengan menggunakan 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  

Kueri berikut memilih semua informasi dari deliveries3 tabel.

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  

Berikut adalah hasil yang ditetapkan.

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)

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

C: Menggunakan SESSION_USER untuk mengembalikan nama pengguna sesi saat ini

Contoh berikut mengembalikan pengguna sesi untuk sesi saat ini.

SELECT SESSION_USER;  

Lihat Juga

ALTER TABLE (Transact-SQL)
BUAT TABEL (Transact-SQL)
CURRENT_TIMESTAMP (T-SQL)
CURRENT_USER (T-SQL)
SYSTEM_USER (T-SQL)
Fungsi Sistem (Transact-SQL)
USER (Transact-SQL)
USER_NAME (T-SQL)