Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitik Platform Sistemi (PDW)
Microsoft Fabric'te SQL veritabanı
Belirtilmiş bir veritabanı yöneticisinin belirtilen veritabanı rolünün üyesi olup olmadığını gösterir.
Transact-SQL söz dizimi kuralları
Uyarı
Microsoft Entra Id daha önce Azure Active Directory (Azure AD) olarak biliniyordu.
Sözdizimi
IS_ROLEMEMBER ( 'role' [ , 'database_principal' ] )
Arguments
'Rol'
Kontrol edilen veritabanı rolünün adı.
RolSysname.
'database_principal'
Veritabanı kullanıcısının adı, veritabanı rolü veya uygulama rolü kontrol edilecek mi?
database_principalsysname'dir ve varsayılan olarak NULL'dur. Herhangi bir değer belirtilmediyse, sonuç mevcut yürütme bağlamına dayanır. Parametre NULL kelimesini içeriyorsa, NULL döner.
Dönüş Türleri
int
| Dönüş değeri | Description |
|---|---|
| 0 | database_principalbir rol üyesi değil. |
| 1 | database_principalbir görev üyesidir. |
| null | database_principal veya rol geçerli değil ya da rol üyeliğini görüntüleme izniniz yok. |
Açıklamalar
IS_ROLEMEMBER fonksiyonu, yönetici Microsoft Entra grubunun üyesiyse Microsoft Entra yöneticisi için desteklenmemektedir. IS_ROLEMEMBER fonksiyonu, Microsoft Entra grubunun üyesi olan Microsoft Entra kullanıcıları için desteklenir, ancak bu grup Microsoft Entra yöneticisi değilse.
IS_ROLEMEMBER kullanılarak mevcut kullanıcının veritabanı rolünün izinlerini gerektiren bir eylemi gerçekleştirip gerçekleştiremeyeceğini belirleyin.
Eğer database_principal bir Windows girişine dayanıyorsa, örneğin Contoso\Mary5, IS_ROLEMEMBER NULL döner; database_principal SQL Server'a doğrudan erişim verilmedi veya reddedildikçe.
Eğer isteğe bağlı database_principal parametresi sağlanmıyorsa ve database_principal Windows alan girişine dayanıyorsa, Windows grubuna üyelik yoluyla veritabanı rolünün üyesi olabilir. Bu dolaylı üyelikleri çözmek için IS_ROLEMEMBER, alan kontrolcüsünden Windows grup üyelik bilgisi ister. Alan kontrolcüsü erişilemezse veya yanıt vermezse, IS_ROLEMEMBER sadece kullanıcı ve yerel gruplarını hesaba katarak rol üyeliği bilgilerini döndürür. Belirtilen kullanıcı mevcut kullanıcı değilse, IS_ROLEMEMBER tarafından döndürülen değer, doğrulama cihazının (örneğin Active Directory) SQL Server'a son veri güncellemesinden farklı olabilir.
Eğer isteğe bağlı database_principal parametresi sağlanırsa, kullanıcı sys.database_principals'de bulunmalıdır veya IS_ROLEMEMBER NULL döndürür.
database_principal parametresi bir alan girişine veya Windows grubuna dayalı olduğunda ve alan kontrolcüsü erişilemezse, IS_ROLEMEMBER çağrıları başarısız olur ve yanlış veya eksik veri döndürebilir.
Alan kontrolcüsü mevcut değilse, IS_ROLEMEMBER çağrısı Windows prensibi yerel olarak kimlik doğrulaması sağlandığında, örneğin yerel Windows hesabı veya SQL Server girişi gibi doğru bilgileri verir.
IS_ROLEMEMBER bir Windows grubu veritabanı ana argümanı olarak kullanıldığında her zaman 0 döndürür ve bu Windows grubu, başka bir Windows grubunun üyesidir, bu da belirtilen veritabanı rolünün bir üyesidir.
Windows Vista ve Windows Server 2008'de bulunan Kullanıcı Hesabı Kontrolü (UAC) da farklı sonuçlar verebilir. Bu, kullanıcının sunucuya Windows grubu üyesi olarak mı yoksa belirli bir SQL Server kullanıcısı olarak mı eriştiğine bağlıdır.
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 ancak 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.
İlgili Fonksiyonlar
Mevcut kullanıcının belirtilen Windows grubu, Microsoft Entra grubu veya SQL Server veritabanı rolünün üyesi olup olmadığını belirlemek için IS_MEMBER (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.
Permissions
Veritabanı rolünde VIEW DEFINITION izni gerektirir.
Örnekler
Aşağıdaki örnek, mevcut kullanıcının sabit veritabanı rolünün db_datareader üyesi olup olmadığını gösterir.
IF IS_ROLEMEMBER ('db_datareader') = 1
print 'Current user is a member of the db_datareader role'
ELSE IF IS_ROLEMEMBER ('db_datareader') = 0
print 'Current user is NOT a member of the db_datareader role'
ELSE IF IS_ROLEMEMBER ('db_datareader') IS NULL
print 'ERROR: The database role specified is not valid.';
Ayrıca Bkz.
ROL YARAT (Transact-SQL)
YENİ ROL (Transact-SQL)
DROP ROLÜ (Transact-SQL)
SUNUCU ROLÜ OLUŞTUR (Transact-SQL)
SUNUCU ROLÜNÜ DEĞIŞTIR (Transact-SQL)
SUNUCUYU AÇ ROLÜ (Transact-SQL)
IS_MEMBER (Transact-SQL)
IS_SRVROLEMEMBER (Transact-SQL)
Güvenlik İşlevleri (Transact-SQL)