Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Copier les logins avant une sauvegarde, un déplacement de base, une migration, etc.

SQL Server possède une particularité, celle de séparer la sécurité des bases de données de celle du serveur. Le serveur dispose en effet de comptes appelés « login » ou « connexion » permettant l’authentification auprès de celui-ci. La base de données possède quant à elle des comptes appelés « user » ou « utilisateur ».

Un utilisateur se trouve généralement mappé à une connexion, permettant ainsi à se dernier de pouvoir accéder à la base de données avec les droits de l’utilisateur. Mais pas toujours, lorsque par exemple vous copier la base de données sur un autre serveur, ses utilisateurs de retrouvent orphelins.

C’est en fait un comportement souhaité pour éviter des failles de sécurité. En effet toute personne ayant les droits de restaurer une base et/ou de créer des connexions au niveau du serveur se retrouverait implicitement avec des droits dans la base ajoutée au serveur. C’est aussi pour cette raison qu’un utilisateur d’une base X nommé Y n’est pas considéré identique par le moteur que l’utilisateur Y de la base Z. Bien que portant le même nom ils sont différent car dans 2 bases de données différentes (en tout cas ce comportement est celui par défaut depuis SQL Server 2000 SP3).

Pour pouvoir ré-associer les connexions / utilisateurs il existe une astuce qui permet de créer les connexions avec le même identifiant interne. On créée une procédure stockée appelé sp_help_revlogin qui génère un script qui nous servira à dupliquer les fameux comptes de connexion au serveur.

Si vous copiez les Logins de SQL 7, 2000 vers SQL 7, 2000, 2005, il vous faudra cette version :
http://support.microsoft.com/kb/246133

Pour une copie à partir de SQL 2005 vers SQL 2005, ce sera celle-ci :
http://support.microsoft.com/kb/918992

On exécute alors sur le serveur depuis lequel on va copier les logins :

EXEC sp_help_revlogin

On copie le script ainsi obtenu que l’on exécute sur l’autre serveur. Pensez au besoin à aller dans les options de l’analyseur de requêtes ou de Management Studio pour l’empêcher de tronquer les lignes de texte.

Le script ainsi obtenu peut idéalement se conserver avec les sauvegardes des bases, il vous sera très utile en cas de restauration de celles-ci sur un nouveau serveur.

Bonne copie…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié vendredi 22 juin 2007 22:56 par christian
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Compte rendu : SharePoint / O365 : des pratiques pour une meilleure productivité par The Mit's Blog le 12-12-2014, 18:11

- [TFS] Suppression des feature SQL Entreprise en masse par Blog de Jérémy Jeanson le 12-06-2014, 09:18

- [Clean Code] règles de nommage par Fathi Bellahcene le 12-04-2014, 22:59

- Windows To Go 10 et Upgrades impossibles par Blog de Jérémy Jeanson le 12-04-2014, 21:38

- SharePoint OnPremise: Statistiques d’utilisation pour traquer les sites fantomes par Blog Technique de Romelard Fabrice le 12-03-2014, 10:28

- SharePoint 2007: Script PowerShell permettant le backup de toutes les collections de sites d’une application Web par Blog Technique de Romelard Fabrice le 12-02-2014, 10:00

- Xamarin : un choix précieux par .net is good... C# is better ;) le 12-01-2014, 15:10

- Office 365: Comparaison des composants pour préparer votre migration de SharePoint 2007 vers Office 365 par Blog Technique de Romelard Fabrice le 11-28-2014, 16:20

- Créer un périphérique Windows To Go 10 ! par Blog de Jérémy Jeanson le 11-21-2014, 04:54

- RDV à Genève le 12 décembre pour l’évènement “SharePoint–Office 365 : des pratiques pour une meilleure productivité !” par Le blog de Patrick [MVP Office 365] le 11-19-2014, 10:40