====== Downgrade d'une base MSSQLSERVER ======
===== Information =====
Cet article s'applique pour des bases de données Microsoft SQL Server (Express ou non). Dans certains cas, il peut être requis de transférer une base de donnée de SQL Server 2014 à SQL Server 2008 (par exemple). Dans ce cas, l'utilitaire d'import de base de version inférieure peut bloquer l'import, pour raison de compatibilité.
Cette méthode a pour but d'exporter les données dans un fichier ''.sql'' et l'importer dans un autre SGBD MSSQLSERVER.
Lors de l'import sur le SGBD de version inférieure, il faut bien tester le comportement de votre application exploitant la base. Certaines spécificités ne peuvent êtres transférées et des incompatibilités peuvent survenir. Faites des sauvegardes avant de procéder !
===== Détails =====
| SGBD Source | MSSQL SERVER Express 2014 |
| SGBD Arrivée | MSSQL SERVER 2008 R2 |
===== Export =====
Lancer Sql Management Studio, se connecter avec un utilisateur ayant les droits sur la base à exporter.
* Clic droit sur la base à exporter, choisir dans le menu ''Tâches -> Générer des scripts''
* Cliquer sur ''Suivant''. Choisissez la base à exporter et cliquez sur ''Suivant''.
* Un ensemble de paramètres est maintenant disponible. Chercher la ligne ''Générer un script pour la version du serveur'', et choisissez dans la boite déroulante la version d'arrivée (ici 2008 R2). Si la ligne ''Type de données à générer'' existe, choisir ''Schéma et données'' (disponible selon version du SGBD).
* Dans ce même menu, passer ''Générer un script pour les clés étrangères'' et ''Générer un script pour les index'' à ''Vrai'' (True). Cliquer sur ''Suivant''.
* A ce nouvel écran, choisir d'exporter les procédures stockées, tables et utilisateurs (cocher les cases). En cliquant sur ''Suivant'', un écran sera proposé pour chaque type d'objet, afin de faire une sélection fine. Sélectionnez tout.
* Au dernier écran, choisir ''Générer un script sur fichier''. Laisser les options en ''Fichier unique'' et ''Unicode''. Choisir où enregistrer ce fichier, et cliquer sur ''Suivant''.
* Un récapitulatif est affiché. Si tout est correct, cliquer sur ''Terminer''. L'export débute vers le fichier.
===== Import =====
Pour importer la base, elle doit d'abord être créée vide, avec un utilisateur ayant les droits dessus.
Le fichier généré lors de l'export est probablement trop gros pour être ouvert avec SQL Management Studio. Il faut donc faire l'import en ligne de commande.
Utilisez la commande suivante :
sqlcmd -S localhost -U Utilisateur -P MotDePasse -d MaBase -i monfichier.sql -a 32767
Le paramètre ''-a'' permet de définir la taille des paquets d'import. Selon la taille de la base, l'import peut être très long. Allez chercher un café.
===== Sources =====
[[https://www.mssqltips.com/sqlservertip/2810/how-to-migrate-a-sql-server-database-to-a-lower-version/|mssqltips.com]] - [[http://stackoverflow.com/questions/431913/how-do-you-import-a-large-ms-sql-sql-file|stackoverflow.com]]