Um den Benutzer mit dem Login abzugleichen, können Sie die gespeicherte Systemprozedur sp_change_users_login.
verwendensp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ]
[ , [ @LoginName = ] 'login' ]
[ , [ @Password = ] 'password' ];
Zum Beispiel:
EXEC sp_change_users_login 'Update_One','User123','User123'
Wenn Sie viele Benutzer haben, die nicht synchronisiert sind, können Sie einen Cursor verwenden, um alle Benutzer herauszuziehen und diesen Befehl für sie auszuführen. Es hat keine nachteiligen Auswirkungen, dies für Benutzer auszuführen, die nicht asynchron sind, und es wird alle verwaisten Benutzer reparieren.
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
Dies muss im Kontext der Datenbank ausgeführt werden, in der die Benutzer festgelegt werden sollen.