En reliant TOUS les Utilisateurs de se connecter après la restauration d'une base de données SQL Server 2005
(Note de cette question porte sur le lien entre TOUS les Utilisateurs, à la différence de la double possible que la demande sur la liaison à un seul utilisateur)
Je souhaite déplacer une base de données entre deux serveurs, j'ai une sauvegarde de la base de données à partir du premier serveur et fait une restauration de base de données sur le 2ème serveur, c'est très bien.
Cependant notre application rend l'utilisation de beaucoup d'utilisateurs de base de données qui sont définis dans la base de données. Ceux-ci doivent être liés à des connexions qui sont définis dans la base de données master. Le serveur j'ai restauré la base de données dispose de toutes les connexions définies, cependant ils ont des peid.
Je ne suis pas un T-SQL expert....
Je pense que sp_change_users_login
est une partie de la solution, mais je ne trouve pas comment le faire automatiquement le lien tous les utilisateurs dans la base de données restaurée à la connexion du même nom.
Les scripts de création de base de données que nous utilisons pour notre application, créer les utilisateurs et les sessions, mais il ne précise pas le SID lors de la création de la connexion, donc ce problème. Maintenant, si j'avais une machine de temps...
(Quand je Google je reçois beaucoup de visites, mais ils sont pour la plupart des sites qui ne vous laissera pas voir la réponse sans avoir à s'inscrire sur le site en premier.)
- Voir aussi cette question stackoverflow.com/questions/229883/...
- Double Possible de Comment connecter un Serveur SQL existant de connexion à une base de données SQL Server de l'utilisateur du même nom
Vous devez vous connecter pour publier un commentaire.
Je suis venu avec la suivante. Il fonctionne très bien car il vous montre:
D'autres solutions nécessitent que vous savez les orphelins nom d'utilisateur avant la main afin de les corriger.
Le code suivant pourrait exécuter une procédure stockée qui est appelée après la restauration d'une base de données vers un autre serveur.
Script:
Résultat:
*Remarque: Les 4 qui n'ont pas été corrigés (dans mon exemple, la capture d'écran ci-dessus) n'ont pas de correspondant de l'Utilisateur dans le Serveur de destination de la base de données a été restaurée.
']; Drop table users;
est un SQL valide nom d'utilisateur qui pourraient être utilisés pour le mal. Edit: sans doute le DBA aurait pris cette place, mais j'ai vu assez d'applications qui permettent aux utilisateurs de créer leurs propres DB nom d'utilisateur.Oui, vous pouvez le faire en exécutant:
Toutefois, si votre question est puis-je réparer tous les utilisateurs automatiquement alors ce ne sera pas le faire.
sp_change_users_login
est maintenant obsolète.Si:
Fais pas, essayez ceci:
Je l'ai trouvé ici:
http://dbadiaries.com/using-sp_change_users_login-to-fix-sql-server-orphaned-users
J'ai un beau script que vous pouvez utiliser afin de créer des connexions à partir de la base de données des utilisateurs,qui j'en suis venu à travers, après une recherche de ce problème ce script est à l'aide d'une procédure stockée. vous pouvez trouver quelques autres scripts utiles ici aussi à cette url
http://www.sqlserveroptimizer.com/2011/08/how-to-script-logins-from-user-database-in-sql-server-20052008-r2/
J'ai trouvé le script suivant à partir de Microsoft KB918992 - exécuter sur le serveur d'origine et il va créer une procédure stockée appelée "sp_help_revlogin" qui génère un autre script à exécuter sur le serveur de destination, la création de tous les comptes d'utilisateur avec les mêmes mots de passe et les peid. Fait des merveilles pour notre mise à niveau à partir de SQL2000 à 2008.