sp_addrolemember (Transact-SQL)

Berlaku untuk: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform 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.

Konvensi sintaks Transact-SQL

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