sql >> Databáze >  >> RDS >> Sqlserver

SQL mapuje přihlášení ke stávajícímu uživateli

Ke sladění uživatele s přihlášením můžete použít systémovou uloženou proceduru sp_change_users_login.

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

Například:

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

Pokud máte mnoho uživatelů, kteří nejsou synchronizováni, můžete pomocí kurzoru vytáhnout všechny uživatele a spustit pro ně tento příkaz. Spuštění proti uživatelům, kteří nejsou synchronizovaní, nemá žádný nepříznivý účinek a opraví všechny osiřelé uživatele.

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

Toto musí být spuštěno v kontextu databáze, ve které potřebujete uživatele opravit.



  1. Chyba MySQL #1054 – Neznámý sloupec v 'Seznamu polí'

  2. Před vložením zkontrolujte, zda řádek v databázi existuje

  3. Jak zjistit stav replikace MySQL pomocí výběrového dotazu?

  4. Jak správně spustit vložení na propojený server SQL?