Bagikan melalui


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.

Konvensi sintaks transact-SQL

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, , guestatau 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