IS_SRVROLEMEMBER (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Menunjukkan apakah login SQL Server adalah anggota peran server yang ditentukan.

Konvensi sintaks transact-SQL

Sintaksis

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

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 server yang sedang diperiksa. perannya adalah sysname.

Nilai yang valid untuk peran adalah peran server yang ditentukan pengguna, dan peran server tetap berikut:

  • sysadmin
  • serveradmin
  • dbcreator
  • setupadmin
  • bulkadmin
  • securityadmin
  • diskadmin
  • publik
  • processadmin

'login'
Adalah nama login SQL Server untuk diperiksa. login 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.

Catatan

Saat masuk Microsoft Entra berada dalam pratinjau publik untuk Azure SQL Database dan Azure Synapse, menggunakan perwakilan Microsoft Entra untuk masuk tidak didukung.

Jenis Kembalian

int

Nilai hasil Deskripsi
0 login bukan anggota peran.

Di Azure SQL Database, pernyataan ini selalu mengembalikan 0.
1 login adalah anggota peran.
NULL peran atau login tidak valid, atau Anda tidak memiliki izin untuk melihat keanggotaan peran.

Keterangan

Gunakan IS_SRVROLEMEMBER untuk menentukan apakah pengguna saat ini dapat melakukan tindakan yang memerlukan izin peran server.

Jika login Windows, seperti Contoso\Mary5, ditentukan untuk masuk, IS_SRVROLEMEMBER mengembalikan NULL, kecuali jika login telah diberikan atau ditolak akses langsung ke SQL Server.

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

Jika parameter masuk opsional disediakan, login Windows yang sedang dikueri harus ada di sys.server_principals, atau IS_SRVROLEMEMBER mengembalikan NULL. Ini menunjukkan bahwa login tidak valid.

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

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

IS_SRVROLEMEMBER selalu mengembalikan 0 ketika grup Windows digunakan sebagai argumen masuk, dan grup Windows ini adalah anggota grup Windows lain yang, pada gilirannya, anggota peran server yang ditentukan.

Pengaturan Kontrol Akun Pengguna (UAC) juga dapat menyebabkan hasil yang berbeda kembali. 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 server tetap sysadmin memiliki izin CONTROL SERVER . Jika pengguna memiliki izin SERVER KONTROL tetapi bukan anggota peran, fungsi ini akan melaporkan dengan benar bahwa pengguna bukan anggota peran sysadmin , meskipun pengguna memiliki izin yang sama.

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 database, gunakan IS_ROLEMEMBER (Transact-SQL).

Izin

Memerlukan izin LIHAT DEFINISI pada peran server.

Contoh

Contoh berikut menunjukkan apakah login SQL Server untuk pengguna saat ini adalah anggota sysadmin peran server tetap.

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

Contoh berikut menunjukkan apakah Pat login domain adalah anggota peran server tetap diskadmin .

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

Lihat Juga

IS_MEMBER (T-SQL)
Fungsi Keamanan (T-SQL)