sp_addrolemember (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Menambahkan pengguna database, peran database, login Windows, atau grup Windows ke peran database dalam database saat ini.
Penting
Fitur ini akan dihapus dalam versi Microsoft SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Gunakan ALTER ROLE sebagai gantinya.
Sintaks
sp_addrolemember [ @rolename = ] 'role', [ @membername = ] 'security_account'
Catatan
Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.
Argumen
[ @rolename= ] 'peran'
Adalah nama peran database dalam database saat ini. peran adalah sysname, tanpa default.
[ @membername= ] 'security_account'
Apakah akun keamanan ditambahkan ke peran tersebut. security_account adalah sysname, tanpa default. security_account bisa menjadi pengguna database, peran database, login Windows, atau grup Windows.
Mengembalikan Nilai Kode
0 (keberhasilan) atau 1 (kegagalan)
Keterangan
Anggota ditambahkan ke peran dengan menggunakan sp_addrolemember mewarisi izin peran. Jika anggota baru adalah prinsipal tingkat Windows tanpa pengguna database yang sesuai, pengguna database akan dibuat tetapi mungkin tidak sepenuhnya dipetakan ke login. Selalu periksa apakah login ada dan memiliki akses ke database.
Peran tidak dapat menyertakan dirinya sebagai anggota. Definisi "melingkar" seperti itu tidak valid, bahkan ketika keanggotaan hanya secara tidak langsung tersirat oleh satu atau beberapa keanggotaan perantara.
sp_addrolemember tidak dapat menambahkan peran database tetap, peran server tetap, atau dbo ke peran.
Hanya gunakan sp_addrolemember untuk menambahkan anggota ke peran database. Untuk menambahkan anggota ke peran server, gunakan sp_addsrvrolemember (Transact-SQL).
Izin
Menambahkan anggota ke peran database yang fleksibel memerlukan salah satu hal berikut ini:
Keanggotaan dalam peran database tetap db_securityadmin atau db_owner.
Keanggotaan dalam peran yang memiliki peran.
UBAH izin PERAN APA PUN atau UBAH izin pada peran.
Menambahkan anggota ke peran database tetap memerlukan keanggotaan dalam peran database tetap db_owner.
Contoh
A. Menambahkan login Windows
Contoh berikut menambahkan login Contoso\Mary5
Windows ke AdventureWorks2012
database sebagai pengguna Mary5
. Pengguna Mary5
kemudian ditambahkan ke Production
peran.
Catatan
Karena Contoso\Mary5
dikenal sebagai pengguna Mary5
database dalam database AdventureWorks2019, nama Mary5
pengguna harus ditentukan. Pernyataan akan gagal kecuali Contoso\Mary5
ada login. Uji dengan menggunakan login dari domain Anda.
USE AdventureWorks2012;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;
GO
B. Menambahkan pengguna database
Contoh berikut menambahkan pengguna Mary5
database ke Production
peran database dalam database saat ini.
EXEC sp_addrolemember 'Production', 'Mary5';
Contoh: Analytics Platform System (PDW)
C. Menambahkan login Windows
Contoh berikut menambahkan login LoginMary
ke AdventureWorks2008R2
database sebagai pengguna UserMary
. Pengguna UserMary
kemudian ditambahkan ke Production
peran.
Catatan
Karena login LoginMary
dikenal sebagai pengguna UserMary
database dalam database AdventureWorks2019, nama UserMary
pengguna harus ditentukan. Pernyataan akan gagal kecuali Mary5
ada login. Login dan pengguna biasanya memiliki nama yang sama. Contoh ini menggunakan nama yang berbeda untuk membedakan tindakan yang memengaruhi login vs. pengguna.
-- Uses AdventureWorks
CREATE USER UserMary FOR LOGIN LoginMary ;
GO
EXEC sp_addrolemember 'Production', 'UserMary'
D. Menambahkan pengguna database
Contoh berikut menambahkan pengguna UserMary
database ke Production
peran database dalam database saat ini.
EXEC sp_addrolemember 'Production', 'UserMary'
Lihat juga
Prosedur Tersimpan Keamanan (Transact-SQL)
sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL)
sp_grantdbaccess (Transact-SQL)
Prosedur Tersimpan Sistem (Transact-SQL)
Peran Tingkat Database