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.
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)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk