SESSION_USER (T-SQL)
Berlaku untuk: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
SESSION_USER mengembalikan nama pengguna konteks saat ini dalam database saat ini.
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)