Aracılığıyla paylaş


USER_NAME (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Belirli bir tanımlama numarasından veya mevcut kullanıcı adından veritabanı kullanıcı adını döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

USER_NAME ( [ ID ] )

Arguments

ID

Veritabanı kullanıcısıyla ilişkilendirilen kimlik numarası, sys.database_principals'de listelenmiştir. IDint. Parantez şarttır.

Dönüş türleri

nvarchar(128)

Açıklamalar

ID atıldığında, mevcut bağlamdaki mevcut kullanıcı varsayılır. Parametre şu kelimeyi NULLiçeriyorsa, USER_NAME , döndürecektir NULL. USER_NAME Bir EXECUTE ASifade belirtilmeden çağrıldığında, USER_NAME taklit edilen kullanıcının adını döndürür. Bir Windows yöneticisi bir grup üyeliği yoluyla veritabanına erişirse, USER_NAME grup yerine Windows yöneticisinin adını döndürür.

Bu USER_NAME() fonksiyon Azure SQL Veritabanı'nda desteklense de, Azure SQL Veritabanı üzerinde kullanılmak EXECUTE AS USER = USER_NAME(n) desteklenmez.

Örnekler

A. Kullanıcı kimliğini tanımlamak için USER_NAME() kullanın

Aşağıdaki örnek, sys.database_principals'de listelendiği gibi kullanıcı kimliği 13için kullanıcı adını döndürür.

SELECT USER_NAME(13);  
GO  

B. Kimliksiz USER_NAME kullanın

Aşağıdaki örnek, bir kimlik belirtilmeden mevcut kullanıcının adını bulur.

SELECT USER_NAME();  
GO  

İşte sistem yöneticisi sabit sunucu rolünde çalışan bir kullanıcı için sonuç seti burada.

dbo  

C. WHERE maddesinde USER_NAME kullanın

Aşağıdaki örnek, adın sistem fonksiyonunun USER_NAME kullanıcı tanımlama numarasına 1uygulanmasının sonucuna eşit olduğu satır olarak sys.database_principals.

SELECT name FROM sys.database_principals WHERE name = USER_NAME(1);  
GO  

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

name  
------------------------------  
dbo  
  
(1 row(s) affected)

D. EXECUTE AS ile taklit sırasında USER_NAME arayın

Aşağıdaki örnek, taklit sırasında nasıl USER_NAME davrandığını göstermektedir.

EXECUTE AS Şu anda Microsoft Fabric'te desteklenmemektedir.

Dikkat

Test yaparken EXECUTE ASher zaman takip edilmesi gereken a REVERT betiği yaz.

SELECT USER_NAME();  
GO  
EXECUTE AS USER = 'Zelig';  
GO  
SELECT USER_NAME();  
GO  
REVERT;  
GO  
SELECT USER_NAME();  
GO  

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

-------------
dbo  

-------------
Zelig  

-------------
dbo  

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

E. Kimliksiz USER_NAME kullanın

Aşağıdaki örnek, bir kimlik belirtilmeden mevcut kullanıcının adını bulur.

SELECT USER_NAME();  

İşte şu anda giriş yapmış bir kullanıcı için sonuç seti.

User7                              

F. WHERE maddesinde USER_NAME kullanın

Aşağıdaki örnek, sistem fonksiyonunun USER_NAME kullanıcı tanımlama numarasına 1uygulanmasının sonucuna eşit olan adın olduğu satırı bulursysusers.

SELECT name FROM sysusers WHERE name = USER_NAME(1);  

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

name                             
------------------------------   
User7