J'ai dû déplacer plusieurs bases de données SQL Server 2008 vers notre nouveau serveur db, je les ai donc toutes sauvegardées (dans des fichiers .bak), copiées ces fichiers dans la nouvelle boîte et restaurées (le tout à l'aide de SQL Management Studio).
Tout s'est bien passé mais maintenant je trouve que je ne peux pas me connecter à aucune des bases de données en utilisant le compte SQL Server qui continue de fonctionner sur l'ancien SGBDR. Ma connexion authentifiée par Windows fonctionne toujours bien d'ailleurs.
J'ai eu cette idée que les utilisateurs et les autorisations seraient tous dupliqués de manière transparente sur le nouveau serveur de base de données, mais il semble que quelque chose s'est mal passé quelque part. J'apprécierais les commentaires / suggestions / offres d'aide ;-)
C'est ce qu'on appelle des "utilisateurs orphelins". Voici 2 façons de le réparer
Si vous le pouvez, restaurez la base de données principale d'origine en tant que "source de connexion" et sys.server_principals a suffisamment d'informations pour générer toutes les connexions SQL Server et Windows. Autrement dit, les SID et le mot de passe crypté
Si vous utilisez uniquement les connexions Windows, vous pouvez l'exécuter par base de données pour générer un script
Scénario:
la source
Idéalement, vous devez créer un script pour les utilisateurs et les autorisations avant d'effectuer la restauration. Si cela ne s'est pas produit, vous devez alors réparer les choses après coup, et il y a des chances que quelque chose soit manqué, mais vous devriez pouvoir obtenir environ 90% du chemin.
La première chose que vous devez vérifier est de savoir si les mêmes connexions existent sur le nouveau serveur. S'ils ne le font pas, vous devez vérifier si les connexions doivent être créées sur le nouveau serveur. Ne présumez jamais qu'ils devraient être créés, il pourrait y avoir une bonne raison pour laquelle ils n'existaient pas en premier lieu. Vous pouvez ensuite les créer en fouillant dans la table sysusers.
Vous pouvez corriger les utilisateurs orphelins en exécutant quelque chose de semblable au suivant:
Ce code fonctionnera pour SQL2008, mais a été écrit pour être rétrocompatible pour SQL2000.
la source
Vous pouvez faire référence à l'URL suivante pour corriger les autorisations utilisateur de la base de données
http://mywindowsblog.com/?p=287
la source
Voici un petit article qui explique la solution:
Restauration des connexions orphelines dans SQL Server après la restauration de la base de données
la source