For at forene brugeren med login, kan du bruge den systemlagrede procedure sp_change_users_login.
sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ]
[ , [ @LoginName = ] 'login' ]
[ , [ @Password = ] 'password' ];
For eksempel:
EXEC sp_change_users_login 'Update_One','User123','User123'
Hvis du har mange brugere, der er ude af synkronisering, kan du bruge en markør til at trække alle brugerne ud og køre denne kommando for dem. Der er ingen negativ effekt ved at køre dette mod brugere, der ikke er ude af synkronisering, og det vil rette op på alle forældreløse brugere.
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
Dette skal køres i konteksten af den database, du skal have brugerne fikset i.