Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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_principals 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 dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.
J. Perlihatkan laporan pengguna saat ini ke pemetaan masuk
Contoh berikut menghasilkan laporan pengguna dalam database saat ini dan pengidentifikasi keamanan (SID) mereka.
EXECUTE 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. Ganti <password> dengan kata sandi yang kuat.
--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '<password>';
GO
--Map database user MB-Sales to login MaryB.
USE AdventureWorks2022;
GO
EXECUTE 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 sudah ada ke login dengan nama yang sama, atau untuk membuat login Mary SQL Server dengan kata sandi jika login Mary tidak ada. Ganti <password> dengan kata sandi yang kuat.
USE AdventureWorks2022;
GO
EXECUTE sp_change_users_login 'Auto_Fix', 'Mary', NULL, '<password>';
GO