CURRENT_USER (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsMicrosoft Fabric'te SQL analitiği uç noktasıMicrosoft Fabric'te DepoMicrosoft Fabric'te SQL veritabanı

Bu fonksiyon, mevcut kullanıcının adını döndürür. Bu işlev ile USER_NAME()eşdeğerdir.

Transact-SQL söz dizimi kuralları

Sözdizimi

CURRENT_USER  

Dönüş türleri

sysname

Açıklamalar

CURRENT_USER mevcut güvenlik bağlamının adını döndürür. Bağlam değiştirmek için yapılan çağrıdan CURRENT_USER sonra çalıştırılırsaEXECUTE AS, CURRENT_USER taklit edilen bağlamın adını döndürür. Bir Windows yöneticisi bir grup üyesi olarak veritabanına eriştiyse, CURRENT_USER grup adı yerine Windows yöneticisinin adını döndürür.

Mevcut kullanıcının girişini nasıl geri döndüreceğinizi öğrenmek için SUSER_NAME (Transact-SQL) ve SYSTEM_USER (Transact-SQL) bölümlerine bakınız.

Örnekler

A. Mevcut kullanıcı adını geri vermek için CURRENT_USER kullanmak

Bu örnek, mevcut kullanıcının adını döndürür.

SELECT CURRENT_USER;  
GO  

B. CURRENT_USER kısıtlama DEFAULT olarak kullanmak

Bu örnek, satış satırında sütun CURRENT_USER için kısıtlama olarak DEFAULTorder_person kullanılan bir tablo oluşturur.

Note

Azure SQL Veritabanı ve Microsoft Fabric'teki SQL veritabanında bu USE ifade mevcut değildir. Bunun yerine, doğrudan hedef veritabanına bağlanın ve kod örneğinin geri kalanını çalıştırın.

USE AdventureWorks2022;  
GO  
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES  
      WHERE TABLE_NAME = 'orders22')  
   DROP TABLE orders22;  
GO  
SET NOCOUNT ON;  
CREATE TABLE orders22  
(  
order_id int IDENTITY(1000, 1) NOT NULL,
cust_id  int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
order_amt money NOT NULL,
order_person char(30) NOT NULL DEFAULT CURRENT_USER
);  
GO  

Bu örnek, tabloya bir kayıt ekler. Adı Wanida geçen kullanıcı bu ifadeleri çalıştırır.

INSERT orders22 (cust_id, order_amt)  
VALUES (5105, 577.95);  
GO  
SET NOCOUNT OFF;  
GO  

Bu sorgu, tablodan orders22 tüm bilgileri seçer.

SELECT * FROM orders22;  
GO  

Sonuç kümesi aşağıdadır.

order_id    cust_id     order_date           order_amt    order_person
----------- ----------- -------------------- ------------ ------------
1000        5105        2005-04-03 23:34:00  577.95       Wanida
  
(1 row(s) affected)

C. Taklit edilmiş bir bağlamdan CURRENT_USER kullanmak

Bu örnekte, kullanıcı Wanida 'Arnalfo' adlı kullanıcı kimliğine girmek için aşağıdaki Transact-SQL kodunu çalıştırır.

SELECT CURRENT_USER;  
GO  
EXECUTE AS USER = 'Arnalfo';  
GO  
SELECT CURRENT_USER;  
GO  
REVERT;  
GO  
SELECT CURRENT_USER;  
GO  

Sonuç kümesi aşağıdadır.

Wanida
Arnalfo
Wanida