Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL mapuje login do istniejącego użytkownika

Aby pogodzić użytkownika z loginem, możesz użyć systemowej procedury składowanej sp_change_users_login.

sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern = ] 'user' ] 
[ , [ @LoginName = ] 'login' ] 
[ , [ @Password = ] 'password' ];

Na przykład:

EXEC sp_change_users_login 'Update_One','User123','User123'

Jeśli masz wielu użytkowników, którzy nie są zsynchronizowani, możesz użyć kursora, aby wyciągnąć wszystkich użytkowników i uruchomić dla nich to polecenie. Nie ma żadnego negatywnego wpływu na uruchomienie tego przeciwko użytkownikom, którzy nie są niezsynchronizowani, i naprawi to wszystkich osieroconych użytkowników.

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

To musi być uruchomione w kontekście bazy danych, w której użytkownicy mają być naprawione.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skrypt SQL Server 2008 do usuwania ograniczenia PK, który ma nazwę wygenerowaną przez system

  2. Dostawca nazwanych potoków Błąd dostawcy 40 nie może otworzyć połączenia z błędem 2 programu SQL Server

  3. AKTUALIZUJ, jeśli istnieje, wstawiaj w SQL Server 2008

  4. Jak naprawić stan oczekiwania na odzyskiwanie w bazie danych programu SQL Server?

  5. Nie można znaleźć pliku microsoft.sqlserver.batchparser.dll