IS_MEMBER (T-SQL)
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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.
Catatan
ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).
Sintaks
IS_MEMBER ( { 'group' | 'role' } )
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).
Fungsi Terkait
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)