IS_SRVROLEMEMBER (T-SQL)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance

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

Topic link iconKonvensi Sintaksis T-SQL

Sintaks

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

Catatan

Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan 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 akan mengembalikan NULL.

Jenis Pengembalian

int

Mengembalikan nilai Deskripsi
0 login bukan anggota peran.

Dalam 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

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

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

Jika parameter login opsional tidak disediakan dan jika login 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 permintaan Windows informasi keanggotaan grup dari pengendali domain. Jika pengendali domain tidak dapat diakses atau tidak merespons, IS_SRVROLEMEMBER mengembalikan informasi keanggotaan peran dengan memperkirakan 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 login opsional disediakan, Windows login yang sedang dikueri harus ada di sys.server_principals, atau IS_SRVROLEMEMBER akan 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 akan mengembalikan informasi yang akurat ketika perwakilan 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 yaitu, pada gilirannya, anggota peran server yang ditentukan.

Pengaturan Kontrol Akun Pengguna (UAC) juga dapat menyebabkan 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 server tetap sysadmin memiliki izin CONTROL SERVER . Jika pengguna memiliki izin CONTROL SERVER 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 yang ditentukan atau peran database SQL Server, 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 SQL Server masuk 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 (SQL Bertransaksi)
Fungsi Keamanan (T-SQL)