script pour corriger dynamiquement ophaned les utilisateurs après la db de restauration
Après avoir effectué une restauration de base de données, je veux lancer un script dynamique de fixer ophaned utilisateurs. Mon script ci-dessous une boucle par tous les utilisateurs qui sont affichés après l'exécution de sp_change_users_login "rapport" et applys un "alter user [nom d'utilisateur] avec login = [nom d'utilisateur]" déclaration de fixer SID conflits. Je suis un "incorrect erreur de syntaxe sur la ligne 15" et ne peut pas comprendre pourquoi...aider..
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
Vous devez vous connecter pour publier un commentaire.
Utilisateurs orphelins peuvent être fixés à l'aide de la [dbo].[sp_change_users_login] procédure stockée.
Boucle par tous vos utilisateurs et exécuter la procédure
Bonne Chance
J'ai utilisé une approche similaire, l'emballage le code dans une procédure stockée:
J'ai ensuite utilisé le
sys.sp_MS_marksystemobject
procédure stockée pour faire ma procédure stockée disponible dans toutes les bases de données utilisateur (lui permettant d'opérer sur les objets locaux)Vous pouvez ensuite l'exécuter comme suit:
Ou pour chaque base de données à l'aide de
sp_msforeachdb
: