IS_MEMBER (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Menunjukkan apakah pengguna saat ini adalah anggota grup Microsoft Windows yang ditentukan, grup Microsoft Entra, atau peran database SQL Server.

Fungsi IS_MEMBER didukung untuk grup Microsoft Entra. Satu kasus di mana IS_MEMBER tidak berfungsi adalah jika grup adalah administrator Microsoft Entra untuk instans SQL.

Konvensi sintaks transact-SQL

Catatan

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

Sintaksis

IS_MEMBER ( { 'group' | 'role' } )  

Catatan

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

Argumen

'grup'
Berlaku untuk: SQL Server 2008 (10.0.x) dan yang lebih baru

Adalah nama grup Windows atau Microsoft Entra yang sedang diperiksa. Grup Windows harus dalam format Grup Domain\. grup adalah sysname.

'peran'
Adalah nama peran SQL Server yang sedang diperiksa. peran adalah sysname dan dapat menyertakan peran tetap database atau peran yang ditentukan pengguna, tetapi bukan peran server.

Jenis Kembalian

int

Keterangan

IS_MEMBER mengembalikan nilai berikut.

Nilai hasil Deskripsi
0 Pengguna saat ini bukan anggota grup atau peran.
1 Pengguna saat ini adalah anggota grup atau peran.
NULL Grup atau peran tidak valid. Saat dikueri oleh login SQL Server atau login menggunakan peran aplikasi, mengembalikan NULL untuk grup Windows.

IS_MEMBER menentukan keanggotaan grup Windows dengan memeriksa token akses yang dibuat oleh Windows. Token akses tidak mencerminkan perubahan dalam keanggotaan grup yang dibuat setelah pengguna terhubung ke instans SQL Server. Keanggotaan grup Windows tidak dapat dikueri oleh login SQL Server atau peran aplikasi SQL Server.

Untuk menambahkan dan menghapus anggota dari peran database, gunakan ALTER ROLE (Transact-SQL). Untuk menambahkan dan menghapus anggota dari peran server, gunakan ALTER SERVER ROLE (Transact-SQL).

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 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 login SQL Server lain adalah anggota peran database, gunakan IS_ROLEMEMBER (Transact-SQL). Untuk menentukan apakah login SQL Server adalah anggota peran server, gunakan IS_SRVROLEMEMBER (Transact-SQL).

Contoh

Contoh berikut memeriksa apakah pengguna saat ini adalah anggota peran database atau grup domain Windows.

-- Test membership in db_owner and print appropriate message.  
IF IS_MEMBER ('db_owner') = 1  
   PRINT 'Current user is a member of the db_owner role'  
ELSE IF IS_MEMBER ('db_owner') = 0  
   PRINT 'Current user is NOT a member of the db_owner role'  
ELSE IF IS_MEMBER ('db_owner') IS NULL  
   PRINT 'ERROR: Invalid group / role specified';  
GO  
  
-- Execute SELECT if user is a member of ADVWORKS\Shipping.  
IF IS_MEMBER ('ADVWORKS\Shipping') = 1  
   SELECT 'User ' + USER + ' is a member of ADVWORKS\Shipping.';   
GO  

Lihat Juga

IS_SRVROLEMEMBER (T-SQL)
Prinsipal (Mesin Database)
Tampilan Katalog Keamanan (Transact-SQL)
Fungsi Keamanan (T-SQL)