Aracılığıyla paylaş


IS_SRVROLEMEMBER (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

SQL Server girişinin belirlenen sunucu rolünün üyesi olup olmadığını gösterir.

Transact-SQL söz dizimi kuralları

Sözdizimi

IS_SRVROLEMEMBER ( 'role' [ , 'login' ] )  

Arguments

'Rol'
Kontrol edilen sunucu rolünün adı. RolSysname.

Rol için geçerli değerler kullanıcı tanımlı sunucu rolleri ve aşağıdaki sabit sunucu rolleridir:

  • sistem yöneticisi
  • serveradmin
  • dbcreator
  • setupadmin
  • bulkadmin
  • securityadmin
  • diskadmin
  • kamu
  • processadmin

'Girişyapıyor'
Kontrol edilecek SQL Server giriş girişinin adı nedir. girişsysname'dir, varsayılan olarak NULL. Eğer herhangi bir değer belirtilmemişse, sonuç mevcut Yürütme bağlamına dayanır. Parametre NULL kelimesini içeriyorsa, NULL döner.

Uyarı

Microsoft Entra girişleri Azure SQL Database ve Azure Synapse için halka açık önizlemede olsa da, giriş için Microsoft Entra principal kullanımı desteklenmez.

Dönüş Türleri

int

Dönüş değeri Description
0 Giriş Role üyesi değildir.

Azure SQL Database'de bu ifade her zaman 0 döndürür.
1 Login , role üyesidir.
null Rol veya giriş geçerli değil ya da rol üyeliğini görüntüleme izniniz yok.

Açıklamalar

IS_SRVROLEMEMBER kullanılarak mevcut kullanıcının sunucu rolünün izinlerini gerektiren bir eylemi gerçekleştirip gerçekleştiremeyeceğini belirleyin.

Eğer Contoso\Mary5 gibi bir Windows girişi giriş için belirtilmişse, IS_SRVROLEMEMBER giriş SQL Server'a doğrudan erişim verilmedi veya reddedildikçe NULL döner.

Eğer isteğe bağlı giriş parametresi sağlanmıyorsa ve giriş Windows alan girişi ise , Windows grubuna üyelik yoluyla sabit bir sunucu rolünün üyesi olabilir. Bu dolaylı üyelikleri çözmek için IS_SRVROLEMEMBER, alan kontrolcüsünden Windows grup üyelik bilgisi ister. Alan kontrolcüsü erişilemezse veya yanıt vermezse, IS_SRVROLEMEMBER 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_SRVROLEMEMBER 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.

Isteğe bağlı giriş parametresi sağlanıyorsa, sorgulanan Windows girişi sys.server_principals'de bulunmalıdır, aksi takdirde IS_SRVROLEMEMBER NULL döndürür. Bu, girişin geçerli olmadığını gösterir.

Giriş parametresi bir alan girişi veya Windows grubuna bağlı olduğunda ve alan kontrolcüsü erişilmezse, IS_SRVROLEMEMBER çağrıları başarısız olur ve yanlış veya eksik veri döndürebilir.

Alan kontrolcüsü mevcut değilse, IS_SRVROLEMEMBER çağrısı, Windows yöneticisi yerel olarak kimlik doğrulaması yapılabildiğinde, örneğin yerel bir Windows hesabı veya SQL Server girişi gibi doğru bilgileri verir.

IS_SRVROLEMEMBER bir Windows grubu giriş argümanı olarak kullanıldığında her zaman 0 döner; bu Windows grubu ise başka bir Windows grubunun üyesidir, bu da belirtilen sunucu rolünün bir üyesidir.

Kullanıcı Hesabı Kontrolü (UAC) ayarı da dönerin farklı sonuçlarına neden olabilir. 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, sysadmin sabit sunucu rolü CONTROL SERVER iznine sahiptir. Kullanıcı CONTROL SERVER iznine sahipse ancak rolün üyesi değilse, bu fonksiyon kullanıcının aynı izinlere sahip olmasına rağmen sistem yöneticisi rolünün üyesi olmadığını doğru şekilde bildirir.

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 veritabanı rolünün üyesi olup olmadığını belirlemek için IS_ROLEMEMBER (Transact-SQL) kullanın.

Permissions

Sunucu rolünde VIEW DEFINITION izni gerektirir.

Örnekler

Aşağıdaki örnek, mevcut kullanıcının SQL Server girişinin sabit sunucu rolünün üyesi sysadmin olup olmadığını gösterir.

IF IS_SRVROLEMEMBER ('sysadmin') = 1  
   print 'Current user''s login is a member of the sysadmin role'  
ELSE IF IS_SRVROLEMEMBER ('sysadmin') = 0  
   print 'Current user''s login is NOT a member of the sysadmin role'  
ELSE IF IS_SRVROLEMEMBER ('sysadmin') IS NULL  
   print 'ERROR: The server role specified is not valid.';  

Aşağıdaki örnek, alan girişi Pat'ın diskadmin sabit sunucu rolünün üyesi olup olmadığını gösterir.

SELECT IS_SRVROLEMEMBER('diskadmin', 'Contoso\Pat');  

Ayrıca Bkz.

IS_MEMBER (Transact-SQL)
Güvenlik İşlevleri (Transact-SQL)