sql >> Database >  >> RDS >> Sqlserver

SQL wijst een login toe aan een bestaande gebruiker

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.



  1. MySQL LEFT JOIN, GROUP BY en ORDER BY werkt niet zoals vereist

  2. mysql verslikt zich in bepaalde karakters en mssql niet

  3. Hoe XAMPP MySQL lokale DB te verbinden met behulp van JDBC?

  4. Problemen met het matchen van rijen in de database met behulp van PDO