sp_change_users_login (T-SQL)
Berlaku untuk: SQL Server
Memetakan 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 = ] N'UserNamePattern' ]
[ , [ @LoginName = ] N'LoginName' ]
[ , [ @Password = ] N'Password' ]
[ ; ]
Argumen
[ @Action = ] 'Tindakan'
Menjelaskan tindakan untuk prosedur tersimpan yang akan dilakukan. @Action adalah varchar(10), tanpa default, dan dapat memiliki salah satu nilai berikut.
Nilai | Deskripsi |
---|---|
Auto_Fix |
Menautkan entri pengguna dalam sys.database_principals tampilan katalog sistem di 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 Auto_Fix pernyataan, untuk mengonfirmasi bahwa tautan yang benar sebenarnya dibuat. Hindari menggunakan Auto_Fix dalam situasi sensitif terhadap keamanan.Saat Anda menggunakan Auto_Fix , Anda harus menentukan @UserNamePattern dan @Password jika login belum ada, jika tidak, Anda harus menentukan @UserNamePattern tetapi @Password diabaikan. @LoginName harus NULL . @UserNamePattern harus merupakan pengguna yang valid dalam database saat ini. Login tidak dapat memetakan pengguna lain ke dalamnya. |
Report |
Mencantumkan pengguna dan pengidentifikasi keamanan (SID) terkait dalam database saat ini yang tidak ditautkan ke login apa pun. @UserNamePattern, @LoginName, dan @Password harus NULL ditentukan atau tidak.Untuk mengganti opsi laporan dengan kueri menggunakan tabel sistem, bandingkan entri dengan sys.server_prinicpals entri di sys.database_principals . |
Update_One |
Menautkan @UserNamePattern yang ditentukan dalam database saat ini ke @LoginName SQL Server yang sudah ada. @UserNamePattern dan @LoginName harus ditentukan. @Password harus NULL ditentukan atau tidak. |
[ @UserNamePattern = ] N'UserNamePattern'
Nama pengguna dalam database saat ini. @UserNamePattern adalah sysname, dengan default NULL
.
[ @LoginName = ] N'LoginName'
Nama login SQL Server. @LoginName adalah sysname, dengan default NULL
.
[ @Password = ] N'Kata sandi'
Kata sandi yang ditetapkan ke login SQL Server baru yang dibuat dengan menentukan Auto_Fix
. @Password adalah sysname, dan tidak boleh NULL
. Jika login yang cocok sudah ada, pengguna dan login dipetakan dan @Password diabaikan. Jika login yang cocok tidak ada, sp_change_users_login
buat login SQL Server baru dan tetapkan @Password sebagai kata sandi untuk login baru.
Penting
Selalu gunakan kata sandi yang kuat.
Mengembalikan nilai kode
0
(berhasil) 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 berubah, gunakan sp_change_users_login
untuk menautkan pengguna ke login baru tanpa kehilangan izin pengguna. @LoginName baru tidak boleh sa
, dan @UserNamePattern tidak boleh dbo
, , guest
atau INFORMATION_SCHEMA
pengguna.
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 Auto_Fix
opsi .
Contoh
Sampel kode Transact-SQL dalam artikel ini menggunakan AdventureWorks2022
database sampel atau AdventureWorksDW2022
, yang dapat Anda unduh dari halaman beranda Sampel Microsoft SQL Server dan Proyek Komunitas.
J. Perlihatkan laporan pengguna saat ini ke pemetaan masuk
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, dan membuat login baru jika perlu
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 merupakan 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