Untuk merekonsiliasi pengguna dengan login, Anda dapat menggunakan prosedur tersimpan sistem sp_change_users_login.
sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ]
[ , [ @LoginName = ] 'login' ]
[ , [ @Password = ] 'password' ];
Misalnya:
EXEC sp_change_users_login 'Update_One','User123','User123'
Jika Anda memiliki banyak pengguna yang tidak sinkron, Anda dapat menggunakan kursor untuk menarik semua pengguna dan menjalankan perintah ini untuk mereka. Tidak ada efek buruk untuk menjalankan ini terhadap pengguna yang tidak sinkron, dan itu akan memperbaiki semua pengguna yatim piatu.
DECLARE @sql NVARCHAR(MAX);
DECLARE curSQL CURSOR
FOR
SELECT 'EXEC sp_change_users_login ''UPDATE_ONE'', ''' + name + ''', ''' + name + ''''
FROM sysusers
WHERE issqluser = 1
AND name NOT IN ( 'guest', 'dbo', 'sys', 'INFORMATION_SCHEMA' )
OPEN curSQL
FETCH curSQL INTO @sql
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC (
@sql
)
FETCH curSQL INTO @sql
END
CLOSE curSQL
DEALLOCATE curSQL
Ini harus dijalankan dari konteks database yang Anda perlukan untuk diperbaiki oleh pengguna.