Skript dynamisch fix ophaned Benutzer nach dem db-restore
Nach dem ausführen einer Datenbank wiederherstellen, ich will laufen ein dynamisches script zu beheben ophaned Benutzer. Mein Skript durchläuft alle Benutzer angezeigt werden, nach der Ausführung von sp_change_users_login 'report' und gilt als "alter user [username] with login = [Benutzername]" - Anweisung zu beheben SID Konflikte. Ich bin immer eine "falsche syntax error on line 15" und kann nicht herausfinden, warum...Hilfe..
DECLARE @Username varchar(100), @cmd varchar(100)
DECLARE userLogin_cursor CURSOR FAST_FORWARD
FOR
SELECT UserName = name FROM sysusers
WHERE issqluser = 1 and (sid IS NOT NULL AND sid <> 0×0)
AND suser_sname(sid) IS NULL
ORDER BY name
FOR READ ONLY
OPEN userLogin_cursor
FETCH NEXT FROM userLogin_cursor INTO @Username
WHILE @@fetch_status = 0
BEGIN
SET @cmd = ‘ALTER USER ‘+@username+‘ WITH LOGIN ‘+@username
EXECUTE(@cmd)
FETCH NEXT FROM userLogin_cursor INTO @Username
END
CLOSE userLogin_cursor
DEALLOCATE userLogin_cursor
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwaisten Benutzern behoben werden kann mit der [dbo].[sp_change_users_login] gespeicherte Prozedur.
Schleife über alle Benutzer und führen Sie die Prozedur
Glück
Habe ich verwendet einen ähnlichen Ansatz, wickeln Sie den code in eine gespeicherte Prozedur:
Dann habe ich die
sys.sp_MS_marksystemobject
gespeicherte Prozedur, um meine gespeicherten Prozedur verfügbar in allen Benutzer-Datenbanken (so dass es für den Betrieb auf lokale Objekte)Können Sie es wie folgt:
Oder für jede Datenbank, die mithilfe
sp_msforeachdb
: