Aracılığıyla paylaş


IS_MEMBER (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft Fabric'te SQL Veritabanı

Mevcut kullanıcının belirtilen Microsoft Windows grubu, Microsoft Entra grubu veya SQL Server veritabanı rolünün üyesi olup olmadığını gösterir.

IS_MEMBER fonksiyonu Microsoft Entra grupları için desteklenmektedir. IS_MEMBER çalışmadığı tek durum, grubun SQL örneği için Microsoft Entra yöneticisi olmasıdır.

Transact-SQL söz dizimi kuralları

Uyarı

Microsoft Entra Id daha önce Azure Active Directory (Azure AD) olarak biliniyordu.

Sözdizimi

IS_MEMBER ( { 'group' | 'role' } )  

Arguments

'grup'
Geçerlidir: SQL Server 2008 (10.0.x) ve sonrası sürümler

Kontrol edilen Windows veya Microsoft Entra grubunun adı. Bir Windows grubu, Domain\Group formatında olmalıdır. grupsysname'dir.

'Rol'
Kontrol edilen SQL Server rolünün adı. rolsysname'dir ve veritabanı sabit rolleri veya kullanıcı tanımlı rolleri içerebilir, ancak sunucu rollerini içeremez.

Dönüş Türleri

int

Açıklamalar

IS_MEMBER aşağıdaki değerleri döndürür.

Dönüş değeri Description
0 Mevcut kullanıcı grup veya rol üyesi değildir.
1 Mevcut kullanıcı, bir grup veya rol üyesidir.
null Ne grup ne de rol geçerli değil. SQL Server girişi veya uygulama rolü kullanılarak yapılan giriş sorgusu yapıldığında, Windows grubu için NULL döner.

IS_MEMBER, Windows tarafından oluşturulan bir erişim tokenını inceleyerek Windows grup üyeliğini belirler. Erişim tokenı, bir kullanıcı SQL Server örneğine bağlandıktan sonra grup üyeliğinde yapılan değişiklikleri yansıtmaz. Windows grup üyeliği, SQL Server girişi veya SQL Server uygulama rolü tarafından sorgulanamaz.

Bir veritabanı rolüne üye eklemek ve kaldırmak için ALTER ROLE (Transact-SQL) kullanın. Sunucu rolüne üye eklemek ve kaldırmak için ALTER SERVER ROLE (Transact-SQL) kullanabilirsiniz.

Bu fonksiyon, temel izni değil, rol üyeliğini değerlendirir. Örneğin, db_owner sabit veritabanı rolü CONTROL DATABASE iznine sahiptir. Kullanıcı CONTROL DATABASE iznine sahipse ama rol üyesi değilse, bu fonksiyon kullanıcının aynı izinlere sahip olmasına rağmen db_owner rolünün üyesi olmadığını doğru şekilde bildirir.

Sysadmin sabit sunucu rolünün üyeleri, her veritabanına dbo kullanıcısı olarak girer. Sistem yöneticisi üyesi için izinleri kontrol ediyorum, sabit sunucu rolünde, orijinal girişin değil, dbo için izinleri kontrol ediyor. dbo veritabanı rolüne eklenemeyeceği ve Windows gruplarında olmadığı için, dbo her zaman 0 (veya rol yoksa NULL) döndürür.

Başka bir SQL Server girişinin veritabanı rolünün üyesi olup olmadığını belirlemek için IS_ROLEMEMBER (Transact-SQL) kullanın. SQL Server girişinin sunucu rolünün üyesi olup olmadığını belirlemek için IS_SRVROLEMEMBER (Transact-SQL) kullanın.

Örnekler

Aşağıdaki örnek, mevcut kullanıcının bir veritabanı rolünün üyesi mi yoksa Windows alan grubu üyesi mi olduğunu kontrol eder.

-- Test membership in db_owner and print appropriate message.  
IF IS_MEMBER ('db_owner') = 1  
   PRINT 'Current user is a member of the db_owner role'  
ELSE IF IS_MEMBER ('db_owner') = 0  
   PRINT 'Current user is NOT a member of the db_owner role'  
ELSE IF IS_MEMBER ('db_owner') IS NULL  
   PRINT 'ERROR: Invalid group / role specified';  
GO  
  
-- Execute SELECT if user is a member of ADVWORKS\Shipping.  
IF IS_MEMBER ('ADVWORKS\Shipping') = 1  
   SELECT 'User ' + USER + ' is a member of ADVWORKS\Shipping.';   
GO  

Ayrıca Bkz.

IS_SRVROLEMEMBER (Transact-SQL)
Sorumluları (Veritabanı Altyapısı)
Güvenlik Kataloğu Görünümleri (Transact-SQL)
Güvenlik İşlevleri (Transact-SQL)