Om de gebruiker te verzoenen met de login, kunt u de door het systeem opgeslagen procedure sp_change_users_login gebruiken.
sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ]
[ , [ @LoginName = ] 'login' ]
[ , [ @Password = ] 'password' ];
Bijvoorbeeld:
EXEC sp_change_users_login 'Update_One','User123','User123'
Als u veel gebruikers hebt die niet gesynchroniseerd zijn, kunt u een cursor gebruiken om alle gebruikers eruit te halen en deze opdracht voor hen uit te voeren. Het heeft geen nadelige gevolgen om dit uit te voeren tegen gebruikers die niet synchroon lopen, en het zal alle verweesde gebruikers oplossen.
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
Dit moet worden uitgevoerd in de context van de database waarin u de gebruikers wilt laten repareren.