web-dev-qa-db-fra.com

Restauration de la base de données SQL Server sur la version inférieure

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?

144
asd

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: 

  • mettre à niveau cette instance vers SQL Server 2008 R2 ou
  • restaurez la sauvegarde que vous avez sur une instance SQL Server 2008 R2, exportez toutes les données et importez-les sur une base de données SQL Server 2008.
66
Remus Rusanu

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é.

38
veljasije

Ne fonctionnera pas nécessairement

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 ).

31
Ohad Schneider

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.

28
Ken Williams

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.

 enter image description here

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.

 enter image description here

Oui, vous avez terminé avec le script de création avec schéma et données de la base de données.

22
Smit Patel

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

13
Joy Walker

Vous pouvez essayer ça.

  1. Créez une base de données sur SQL Server 2008.
  2. À l'aide de la fonctionnalité Importer des données, importez des données à partir de SQL Server R2 (ou de toute version supérieure).
  3. utilisez "RedGate SQLCompare" pour synchroniser le script.
6
Ishtiyaq Khan

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.

4
motogeek

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

2
mathewsun

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
1
arnav

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.

0
tony.wiredin