sp_addrolemember (T-SQL)

Berlaku untuk:SQL ServerAzure 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 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 UBAH PERAN sebagai gantinya.

Konvensi sintaks transact-SQL

Sintaksis

sp_addrolemember
    [ @rolename = ] N'rolename'
    , [ @membername = ] N'membername'
[ ; ]

Catatan

Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.

Argumen

[ @rolename = ] N'rolename'

Nama peran database dalam database saat ini. @rolename adalah sysname, tanpa default.

[ @membername = ] N'membername'

Akun keamanan yang ditambahkan ke peran tersebut. @membername adalah sysname, tanpa default. @membername bisa menjadi pengguna database, peran database, login Windows, atau grup Windows.

Mengembalikan nilai kode

0 (berhasil) 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 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 secara tidak langsung disiratkan 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 fleksibel memerlukan salah satu izin berikut:

  • Keanggotaan dalam peran database tetap db_securityadmin atau db_owner .

  • Keanggotaan dalam peran yang memiliki peran.

  • ALTER ANY ROLE izin atau ALTER izin pada peran.

Menambahkan anggota ke peran database tetap memerlukan keanggotaan dalam peran database tetap db_owner .

Contoh

J. Menambahkan login Windows

Contoh berikut menambahkan login Contoso\Mary5 Windows ke AdventureWorks2022 database sebagai pengguna Mary5. Pengguna Mary5 kemudian ditambahkan ke Production peran.

Karena Contoso\Mary5 dikenal sebagai pengguna Mary5 database dalam AdventureWorks2022 database, nama Mary5 pengguna harus ditentukan. Pernyataan gagal kecuali Contoso\Mary5 ada login. Uji dengan menggunakan login dari domain Anda.

USE AdventureWorks2022;
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 AdventureWorks2022 database sebagai pengguna UserMary. Pengguna UserMary kemudian ditambahkan ke Production peran.

Catatan

Karena login LoginMary dikenal sebagai pengguna UserMary database dalam AdventureWorks2022 database, 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 AdventureWorks2022
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'