sql >> Database teknologi >  >> RDS >> Sqlserver

SQL map et login til en eksisterende bruger

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.



  1. SQL-forespørgsel, der kører fint i SSMS, kører meget langsomt i ASP.NET

  2. Oracle Sequence Transactionality

  3. Sådan forbinder du Amazon RDS i iOS

  4. Lagre billeder i SQL Server?