sp_change_users_login (T-SQL)

Berlaku untuk:SQL Server

Peta pengguna database yang sudah ada ke login SQL Server.

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 ALTER USER sebagai gantinya.

Konvensi sintaks transact-SQL

Sintaks

  
sp_change_users_login [ @Action = ] 'action'   
    [ , [ @UserNamePattern = ] 'user' ]   
    [ , [ @LoginName = ] 'login' ]   
    [ , [ @Password = ] 'password' ]  
[;]  

Argumen

[ @Action= ] 'tindakan'
Menjelaskan tindakan yang akan dilakukan oleh prosedur. action is varchar(10). tindakan dapat memiliki salah satu nilai berikut.

Nilai Deskripsi
Auto_Fix Menautkan entri pengguna dalam tampilan katalog sistem sys.database_principals dalam database saat ini ke login SQL Server dengan nama yang sama. Jika login dengan nama yang sama tidak ada, login akan dibuat. Periksa hasil dari pernyataan Auto_Fix untuk mengonfirmasi bahwa tautan yang benar sebenarnya dibuat. Hindari menggunakan Auto_Fix dalam situasi sensitif terhadap keamanan.

Ketika Anda menggunakan Auto_Fix, Anda harus menentukan pengguna dan kata sandi jika login belum ada, jika tidak, Anda harus menentukan pengguna tetapi kata sandi akan diabaikan. login harus NULL. pengguna harus menjadi pengguna yang valid dalam database saat ini. Login tidak boleh memiliki pengguna lain yang dipetakan ke dalamnya.
Laporan Mencantumkan pengguna dan pengidentifikasi keamanan (SID) terkait dalam database saat ini yang tidak ditautkan ke login apa pun. pengguna, masuk, dan kata sandi harus NULL atau tidak ditentukan.

Untuk mengganti opsi laporan dengan kueri menggunakan tabel sistem, bandingkan entri dalam sys.server_prinicpals dengan entri di sys.database_principals.
Update_One Menautkan pengguna yang ditentukan dalam database saat ini ke login SQL Server yang sudah ada. pengguna dan login harus ditentukan. kata sandi harus NULL atau tidak ditentukan.

[ @UserNamePattern= ] 'pengguna'
Adalah nama pengguna dalam database saat ini. pengguna adalah sysname, dengan default NULL.

[ @LoginName= ] 'login'
Adalah nama login SQL Server. login adalah sysname, dengan default NULL.

[ @Password= ] 'password'
Apakah kata sandi ditetapkan ke login SQL Server baru yang dibuat dengan menentukan Auto_Fix. Jika login yang cocok sudah ada, pengguna dan login akan dipetakan dan kata sandi diabaikan. Jika login yang cocok tidak ada, sp_change_users_login membuat login SQL Server baru dan menetapkan kata sandi sebagai kata sandi untuk login baru. kata sandi adalah sysname, dan tidak boleh NULL.

Penting

Selalu gunakan Kata Sandi yang kuat!

Mengembalikan Nilai Kode

0 (keberhasilan) atau 1 (kegagalan)

Tataan Hasil

Nama kolom Jenis data Deskripsi
UserName nama sysname Nama pengguna database.
UserSID varbinary(85) Pengidentifikasi keamanan pengguna.

Keterangan

Gunakan sp_change_users_login untuk menautkan pengguna database di database saat ini dengan login SQL Server. Jika login untuk pengguna telah berubah, gunakan sp_change_users_login untuk menautkan pengguna ke login baru tanpa kehilangan izin pengguna. Login baru tidak boleh sa, dan pengguna tidak boleh dbo, tamu, atau pengguna INFORMATION_SCHEMA.

sp_change_users_login tidak dapat digunakan untuk memetakan pengguna database ke prinsipal tingkat Windows, sertifikat, atau kunci asimetris.

sp_change_users_login tidak dapat digunakan dengan login SQL Server yang dibuat dari prinsipal Windows atau dengan pengguna yang dibuat dengan menggunakan CREATE USER WITHOUT LOGIN.

sp_change_users_login tidak dapat dijalankan dalam transaksi yang ditentukan pengguna.

Izin

Memerlukan keanggotaan dalam peran database tetap db_owner. Hanya anggota peran server tetap sysadmin yang dapat menentukan opsi Auto_Fix .

Contoh

J. Menampilkan laporan pengguna saat ini untuk masuk pemetaan

Contoh berikut menghasilkan laporan pengguna dalam database saat ini dan pengidentifikasi keamanan (SID) mereka.

EXEC sp_change_users_login 'Report';  

B. Memetakan pengguna database ke login SQL Server baru

Dalam contoh berikut, pengguna database dikaitkan dengan login SQL Server baru. Pengguna database MB-Sales, yang pada awalnya dipetakan ke login lain, dipetakan ulang untuk masuk MaryB.

--Create the new login.  
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';  
GO  
--Map database user MB-Sales to login MaryB.  
USE AdventureWorks2022;  
GO  
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';  
GO  

C. Secara otomatis memetakan pengguna ke login, membuat login baru jika diperlukan

Contoh berikut menunjukkan cara menggunakan Auto_Fix untuk memetakan pengguna yang ada ke login dengan nama yang sama, atau untuk membuat login Mary SQL Server yang memiliki kata sandi B3r12-3x$098f6 jika login Mary tidak ada.

USE AdventureWorks2022;  
GO  
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';  
GO  

Lihat Juga

Prosedur Tersimpan Keamanan (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_adduser (T-SQL)
sp_helplogins (T-SQL)
Prosedur Tersimpan Sistem (Transact-SQL)
sys.database_principals (T-SQL)