Comment restaurer le fichier de sauvegarde de la base de données SQL Server de version supérieure sur une version inférieure de SQL Server?
À l'aide de SQL Server 2008 R2 (10.50.1600), j'ai créé un fichier de sauvegarde à partir de cette version du serveur et je souhaite maintenant le restaurer sur SQL Server 2008 (10.00.1600) de mon serveur Live. À ce moment-là, lorsque j'ai restauré sur SQL Server 2008, cela donne une erreur, c'est-à-dire Restore Failed
, car:
La base de données a été sauvegardée sur un serveur exécutant la version 10.50.1600 . Cette version est incompatible avec cela serveur, qui exécute la version 10.00.1600.
Comment restaurer ce fichier de sauvegarde sur ce serveur?
Non, il n'est pas possible de déclasser une base de données. 10.50.1600 est la version SQL Server 2008 R2 . Vous ne pouvez absolument pas restaurer ou attacher cette base de données à l'instance SQL Server 2008 sur laquelle vous tentez de restaurer (SQL Server 2008 est 10.00.1600). Vos seules options sont:
Vous pouvez utiliser une fonctionnalité appelée Exporter une application de couche de données qui génère un fichier .bacpac
comprenant un schéma de base de données et des données.
Sur le serveur de destination, vous pouvez utiliser Importer une application de niveau données option qui crée et remplit une nouvelle base de données à partir du fichier .bacpac
pré-créé.
Si vous souhaitez simplement transférer le schéma de base de données, vous pouvez utiliser Extraire l'application de niveau données pour créer un fichier et Déployer l'application de niveau données / pour déployer le schéma de base de données créé.
J'ai essayé ce processus sur différentes versions de SQL Server, de SQL 2014 à SQL 2012 et de SQL 2014 à SQL 2008R2, et j'ai bien fonctionné.
Ne fonctionnera pas nécessairement
Backup/Restore - ne fonctionnera pas si la cible est une version antérieure de MS SQL.
Copy Database - ne fonctionnera pas si la cible est SQL Server Express: "Le serveur de destination ne peut pas être une instance de SQL Server 2005 ou Express ultérieure."
Importation de données - Ne copie pas le schéma.
Marchera
Génération de script - Tâches -> Générer des scripts. Assurez-vous de définir la version cible de SQL Server cible sur la page Définir les options de script -> Avancé. Vous pouvez également choisir de copier le schéma, les données ou les deux. Notez que dans le script généré, vous devrez peut-être modifier le dossier DATA pour les fichiers mdf/ldf si vous passez de non-express à express ou vice versa.
Services de publication de bases de données Microsoft SQL Server - vient avec SQL Server 2005 et versions ultérieures, je pense. Téléchargez la dernière version de ici . Conditions préalables: sqlncli.msi
/sqlncli_x64.msi
/sqlncli_ia64.msi
, SQLServer2005_XMO.msi
/SQLServer2005_XMO_x64.msi
/SQLServer2005_XMO_ia64.msi
(télécharger ici ).
Voici mes 2 cents sur différentes options pour compléter ceci:
Outils tiers: le moyen le plus simple d’effectuer le travail consiste à créer une base de données vide sur une version antérieure, puis à utiliser des outils tiers pour lire la sauvegarde et synchroniser la nouvelle base de données créée avec celle-ci.
La porte rouge est l’une des plus populaires, mais il en existe bien d’autres comme ApexSQL Diff , ApexSQL Data Diff , Adept SQL , Idera …. Tous ces outils sont premium mais vous pouvez faire le travail en mode d'essai;)
Génération de scripts: comme d'autres l'ont déjà mentionné, vous pouvez toujours écrire la structure et les données à l'aide de SSMS, mais vous devez tenir compte de l'ordre d'exécution. Par défaut, les scripts d’objet ne sont pas classés correctement et vous devez vous occuper des dépendances. Cela peut poser problème si la base de données est volumineuse et contient de nombreux objets.
Assistant d’importation et d’exportation: il ne s’agit pas d’une solution idéale car il ne restaure pas tous les objets mais uniquement les tables de données, mais vous pouvez le prendre en compte pour des corrections rapides et modifiées en cas de besoin.
Vous ne pouvez pas restaurer la base de données (ou attacher) créée dans la version supérieure dans la version inférieure. Le seul moyen est de créer un script pour tous les objets et d'utiliser le script pour générer une base de données.
sélectionnez "Schema and Data" - si vous souhaitez utiliser les deux éléments dans le fichier de script de sauvegarde}
sélectionnez Schema Only - _ {si seul le schéma est nécessaire.
Oui, vous avez terminé avec le script de création avec schéma et données de la base de données.
Une autre façon de faire consiste à utiliser la fonctionnalité "Copier une base de données":
Recherchez par un clic droit sur la base de données source> "Tâches"> "Copier la base de données".
Vous pouvez copier la base de données vers une version inférieure de l'instance SQL Server. Cela a fonctionné pour moi d'un SQL Server 2008 R2 (SP1) - 10.50.2789.0 à Microsoft SQL Server 2008 (SP2) - 10.0.3798.0
Vous pouvez essayer ça.
Ce n’est pas joli, mais c’est ainsi que j’ai agi, à condition que cette option soit installée sur votre installation de SQL 2008 R2.
1) Cliquez avec le bouton droit sur la base de données dans SQL Server 2008 R2 "Tâches" .. "Générer des scripts" dans l'Assistant, sélectionnez la base de données complète et les objets à la première étape. À l'étape "Définir les options de script", vous devriez voir un bouton "Avancé", sélectionnez-le et assurez-vous de sélectionner "Script pour version serveur" = SQL Server 2008 "et non la version R2. Il s'agit d'une étape cruciale, car" importer des données "en soi n'apporte pas toutes les clés primaires, constriants et autres objets tels que des procédures stockées."
2) Exécutez le script SQL généré sur la nouvelle instance d'installation ou de base de données SQL Express ou SQL Server 2008 à l'aide de la fenêtre de requête ou ouvrez le script .sql enregistré et exécutez-le. La nouvelle base de données devrait s'afficher.
3) Maintenant, faites un clic droit sur la nouvelle base de données et sélectionnez "Tâches" .. "Importer des données .." choisissez source comme base de données R2 et la destination comme nouvelle base de données. "Copier les données d'une ou de plusieurs tables ou vues", cochez la case du haut pour sélectionner toutes les tables, puis exécutez l'étape suivante, exécutez le package et vous devriez tout avoir sur une version plus ancienne. Cela devrait fonctionner pour revenir à une version de 2005 également. J'espère que cela aide quelqu'un.
Tâche-> Générer des scripts ... Dans Avancé dans "Types de données pour le script", sélectionnez "Shema et données" Et essayez d'exécuter ce script dans votre version inférieure
vous pouvez utiliser BCP in et out pour de petites tables.
Commande BCP OUT: -
BCP "SELECT * FROM [Dinesh].[dbo].[Invoices]" QUERYOUT C:\av\Invoices1.txt -S MC0XENTC -T -c -r c:\error.csv
Commande BCP IN: - Créer une structure de table pour Invoicescopy1.
BCP [Dinesh].[dbo].[Invoicescopy1] IN C:\av\Invoices.txt -S MC0XENTC -T -c
J'apprécie le fait que ce soit un ancien message, mais il peut être utile que les gens sachent que la migration Azure Wizard (disponible sur Codeplex - ne peut pas créer de lien vers, car Codeplex est en ce moment, je tape ceci) fais-le facilement.