Aracılığıyla paylaş


IS_ROLEMEMBER (Transact-sql)

Belirtilen veritabanı ilke belirtilen veritabanı rolünün bir üyesi olup olmadığını gösterir.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

IS_ROLEMEMBER ( 'role' [ , 'database_principal' ] )

Bağımsız değişkenler

  • 'role'
    İşaretli olduğundan veritabanı rolü addır. roleis sysname.

  • 'database_principal'
    Veritabanı kullanıcı, veritabanı rolü veya uygulama rolü denetlemek için adıdır. database_principalise sysname, null varsayılan. Herhangi bir değer belirtilirse, sonuç geçerli yürütme içeriği üzerinde bağlıdır. Parametre null null döndürür sözcük içeriyorsa.

Dönüş Türleri

int

Dönüş değeri

Açıklama

0

database_principalÜye olmayan role.

1

database_principalüyesi olduğu role.

NULL

database_principalveya rolegeçerli değil veya rol üyeliği görüntüleme izni yok.

Açıklamalar

Geçerli kullanıcı veritabanı rolün izinlerini gerektiren bir eylem gerçekleştirip gerçekleştiremeyeceğinizi belirlemek için IS_ROLEMEMBER kullanın.

Eğer database_principalbir Windows oturum açma gibi temel Contoso\Mary5, IS_ROLEMEMBER döndürür null sürece database_principalverilen veya doğrudan erişim engellendi SQL Server.

Eğer isteğe bağlı database_principalparametresidir sağlanan değildir ve eğer database_principaldayanan bir Windows etki alanında oturum açma Windows Grup üyeliği aracılığıyla bir veritabanı rolünün bir üyesi olabilir. Böyle dolaylı üyelikleri gidermek için IS_ROLEMEMBER etki alanı denetleyicisinden Windows Grup üyeliği bilgilerini ister. Etki alanı denetleyicisi erişilemez veya yanıt vermiyor, IS_ROLEMEMBER tarafından hesap kullanıcı ve onun yerel grupları yalnızca rol üyeliği bilgilerini döndürür. Belirtilen kullanıcının geçerli kullanıcı değilse, IS_ROLEMEMBER tarafından döndürülen değeri doğrulayıcısının (örneğin, Active Directory) farklı son verileri güncelleştirmek için SQL Server.

Eğer isteğe bağlı database_principalparametresi sağlanan, sorgulanan veritabanı asıl bulunması gereken sys.database_principals, ya da IS_ROLEMEMBER boş dönecektir. Bu gösterir database_principalBu veritabanında geçerli değil.

Ne zaman database_principalparametresi temelinde bir etki alanı oturum açma veya bir Windows grubu ve etki alanı denetleyicisine erişilemiyor, IS_ROLEMEMBER yapılan çağrı başarısız olur ve yanlış veya eksik veri döndürebilir.

Etki alanı denetleyicisi kullanılamıyorsa, Windows ilkesini yerel olarak bir yerel Windows hesabı gibi doğrulanabilir zaman IS_ROLEMEMBER çağrısı doğru bilgi döndürür veya bir SQL Servergiriş.

IS_ROLEMEMBERzaman zaman bir Windows grubu veritabanı asıl argüman olarak kullanılır ve bu Windows grubu, belirtilen veritabanı rolünün bir üyesi olan başka bir Windows grubunun 0 döndürür.

Kullanıcı hesabı denetimi (uac) bulunan Windows Vistave Windows Server 2008 de farklı sonuçlar dönmek. Bu kullanıcı bir Windows grup üyesi olarak veya belirli bir sunucu olsun erişilen bağlı olacağını SQL Serverkullanıcının.

Rol üyeliği, temel izni olmayan bu işlevi değerlendirir. Örneğin, db_ownersabit veritabanı rolü CONTROL DATABASEizni. Kullanıcı CONTROL DATABASEizin ama rolünün bir üyesi, bu işlev doğru kullanıcı bir üyesi olmadığını bildirir db_owner rolü, kullanıcı izinleri olsa bile.

İlişkili İşlevler

Geçerli kullanıcının belirtilen Windows grup üyesi olup olmadığını veya SQL Serververitabanı rolü, use IS_MEMBER (Transact-sql). Belirlemek için olup bir SQL Serveroturum açma sunucu rolü bir üyesidir, kullanma IS_SRVROLEMEMBER (Transact-sql).

İzinler

Veritabanı rolü üzerinde görünüm tanımı izni gerektirir.

Örnekler

Aşağıdaki örnek geçerli kullanıcı bir üyesi olup olmadığını gösteren db_datareaderveritabanı rolü.

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.'

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.

Başvuru

CREATE ROLE (Transact-SQL)

alter ROLE (Transact-sql)

ROLE (Transact-sql) bırak

SUNUCU rolü (Transact-sql) oluştur

alter sunucu rolü (Transact-sql)

SUNUCU rolü (Transact-sql) bırak

IS_MEMBER (Transact-sql)

IS_SRVROLEMEMBER (Transact-sql)

Güvenlik işlevler (Transact-sql)