Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL ordnet eine Anmeldung einem vorhandenen Benutzer zu

Um den Benutzer mit dem Login abzugleichen, können Sie die gespeicherte Systemprozedur sp_change_users_login.

verwenden
sp_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.