Bagikan melalui


IS_ROLEMEMBER (T-SQL)

Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Menunjukkan apakah prinsipal database tertentu adalah anggota dari peran database yang ditentukan.

Konvensi sintaks transact-SQL

Catatan

ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).

Sintaksis

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

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

' peran '
Adalah nama peran database yang sedang diperiksa. perannya adalah sysname.

' database_principal '
Adalah nama pengguna database, peran database, atau peran aplikasi untuk diperiksa. database_principal adalah sysname, dengan default NULL. Jika tidak ada nilai yang ditentukan, hasilnya didasarkan pada konteks eksekusi saat ini. Jika parameter berisi kata NULL, parameter akan mengembalikan NULL.

Jenis Kembalian

int

Nilai hasil Deskripsi
0 database_principal bukan anggota peran.
1 database_principal adalah anggota peran.
NULL database_principal atau peran tidak valid, atau Anda tidak memiliki izin untuk melihat keanggotaan peran.

Keterangan

Fungsi IS_ROLEMEMBER tidak didukung untuk administrator Microsoft Entra saat administrator adalah anggota grup Microsoft Entra. Fungsi IS_ROLEMEMBER didukung untuk pengguna Microsoft Entra yang merupakan anggota grup Microsoft Entra, kecuali grup tersebut adalah admin Microsoft Entra.

Gunakan IS_ROLEMEMBER untuk menentukan apakah pengguna saat ini dapat melakukan tindakan yang memerlukan izin peran database.

Jika database_principal didasarkan pada login Windows, seperti Contoso\Mary5, IS_ROLEMEMBER mengembalikan NULL, kecuali database_principal telah diberikan atau ditolak akses langsung ke SQL Server.

Jika parameter database_principal opsional tidak disediakan dan jika database_principal didasarkan pada login domain Windows, parameter tersebut mungkin merupakan anggota peran database melalui keanggotaan dalam grup Windows. Untuk mengatasi keanggotaan tidak langsung tersebut, IS_ROLEMEMBER meminta informasi keanggotaan grup Windows dari pengendali domain. Jika pengendali domain tidak dapat diakses atau tidak merespons, IS_ROLEMEMBER mengembalikan informasi keanggotaan peran dengan memperhitungkan pengguna dan grup lokalnya saja. Jika pengguna yang ditentukan bukan pengguna saat ini, nilai yang dikembalikan oleh IS_ROLEMEMBER mungkin berbeda dari pembaruan data terakhir pengautentikasi (seperti Direktori Aktif) ke SQL Server.

Jika parameter database_principal opsional disediakan, pengguna harus ada di sys.database_principals, atau IS_ROLEMEMBER mengembalikan NULL.

Ketika parameter database_principal didasarkan pada login domain atau berdasarkan grup Windows dan pengendali domain tidak dapat diakses, panggilan ke IS_ROLEMEMBER akan gagal dan mungkin mengembalikan data yang salah atau tidak lengkap.

Jika pengendali domain tidak tersedia, panggilan ke IS_ROLEMEMBER mengembalikan informasi yang akurat ketika prinsipal Windows dapat diautentikasi secara lokal, seperti akun Windows lokal atau login SQL Server.

IS_ROLEMEMBER selalu mengembalikan 0 ketika grup Windows digunakan sebagai argumen utama database, dan grup Windows ini adalah anggota grup Windows lain yang, pada gilirannya, anggota peran database yang ditentukan.

Kontrol Akun Pengguna (UAC) yang ditemukan di Windows Vista dan Windows Server 2008 mungkin juga mengembalikan hasil yang berbeda. Ini akan bergantung pada apakah pengguna mengakses server sebagai anggota grup Windows atau sebagai pengguna SQL Server tertentu.

Fungsi ini mengevaluasi keanggotaan peran, bukan izin yang mendasar. Misalnya, peran database tetap db_owner memiliki izin CONTROL DATABASE . Jika pengguna memiliki izin CONTROL DATABASE tetapi bukan anggota peran, fungsi ini akan melaporkan dengan benar bahwa pengguna bukan anggota peran db_owner , meskipun pengguna memiliki izin yang sama.

Anggota peran server tetap sysadmin memasukkan setiap database sebagai pengguna dbo . Memeriksa izin untuk anggota peran server tetap sysadmin , memeriksa izin untuk dbo, bukan login asli. Karena dbo tidak dapat ditambahkan ke peran database dan tidak ada di grup Windows, dbo selalu mengembalikan 0 (atau NULL jika peran tidak ada).

Untuk menentukan apakah pengguna saat ini adalah anggota grup Windows, grup Microsoft Entra, atau peran database SQL Server yang ditentukan, gunakan IS_MEMBER (Transact-SQL). Untuk menentukan apakah login SQL Server adalah anggota peran server, gunakan IS_SRVROLEMEMBER (Transact-SQL).

Izin

Memerlukan izin LIHAT DEFINISI pada peran database.

Contoh

Contoh berikut menunjukkan apakah pengguna saat ini adalah anggota db_datareader peran database tetap.

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

Lihat Juga

BUAT PERAN (Transact-SQL)
UBAH PERAN (Transact-SQL)
DROP ROLE (Transact-SQL)
MEMBUAT PERAN SERVER (Transact-SQL)
ALTER SERVER ROLE (T-SQL)
DROP SERVER ROLE (Transact-SQL)
IS_MEMBER (T-SQL)
IS_SRVROLEMEMBER (T-SQL)
Fungsi Keamanan (T-SQL)