208 votes

Restauration de la sauvegarde d'une base de données SQL Server sur une version inférieure

Comment restaurer un fichier de sauvegarde d'une base de données SQL Server de version supérieure sur un SQL Server de version inférieure ?

Utilisation de SQL Server 2008 R2 (10.50.1600) J'ai fait un fichier de sauvegarde et je veux maintenant le restaurer sur le serveur SQL de mon serveur réel. 2008 (10.00.1600) .

Lorsque j'ai essayé de restaurer la sauvegarde sur SQL Server 2008, une erreur s'est produite. Restore Failed parce que :

La base de données a été sauvegardée sur un serveur exécutant la version 10.50.1600. Cette version est incompatible avec ce serveur, qui exécute la version 10.00.1600.

Comment puis-je restaurer le fichier de sauvegarde sur ce serveur ?

0 votes

Hmm je ne suis pas sûr que cela soit possible (de la version supérieure à la version inférieure) l'autre option que vous avez est d'exporter les "données" (dans Excel, etc.) de la nouvelle version et de les importer dans l'ancienne version.

2 votes

Vous ne pouvez pas faire cela - ce n'est tout simplement pas possible. Le serveur SQL ne permet pas de "rétrograder" une base de données d'une version supérieure à une version inférieure.

39 votes

Microsoft sait tout sur SQL server (depuis qu'ils l'ont créé) et pourtant déplacer des données entre 2 versions est impossible. Je ne comprends tout simplement pas pourquoi une sorte de mode de compatibilité n'est pas disponible dans l'exportation. Comment cela peut-il être difficile ?

19voto

Joy Walker Points 110

Une autre façon de procéder est d'utiliser la fonction "Copier la base de données" :

Trouvez en faisant 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 SQL Server Instance. Cela a fonctionné pour moi à partir de SQL Server 2008 R2 (SP1) - 10.50.2789.0 vers Microsoft SQL Server 2008 (SP2) - 10.0.3798.0.

4 votes

Notez que cela ne fonctionnera pas si la cible est SQL server express "Le serveur de destination ne peut pas être une instance Express de SQL Server 2005 ou ultérieure". social.msdn.microsoft.com/Forums/fr-US/sqlgetstarted/thread/

3 votes

Il n'est pas non plus possible de copier une base de données de SQL Server 2012 vers SQL Server 2008 de cette manière.

1 votes

Copie de la base de données est une opération de détachement/attachement

8voto

Ishtiyaq Khan Points 11

Vous pouvez essayer ceci.

  1. Créer une base de données sur SQL Server 2008.
  2. La fonction Importer des données permet d'importer des données à partir de SQL Server R2 (ou toute autre version supérieure).
  3. utiliser "RedGate SQLCompare" pour synchroniser script.

8voto

mathewsun Points 30

Aller à Tâche->Générer des scripts ...

Sur Avancé sur "Types de données pour script" sélectionnez "Schema and data" et essayez d'exécuter ce script dans votre version inférieure.

6 votes

C'est une très bonne solution, mais elle fonctionne très mal avec les grandes bases de données.

5voto

motogeek Points 56

Ce n'est pas très joli, mais c'est ainsi que je l'ai fait. Si vous avez installé cette option sur votre installation SQL 2008 R2

1) Cliquez avec le bouton droit de la souris 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 entière et les objets dans la première étape. A l'étape "Set Scripting Options" vous devriez voir un bouton "Advanced", sélectionnez-le et assurez-vous que vous sélectionnez "script for Server Version" = SQL Server 2008" pas la version R2. C'est une étape cruciale, car "importer des données" en soi n'apporte pas toutes les clés primaires, les constantes et tout autre objet comme les procédures stockées."

2) Exécutez le SQL script généré sur la nouvelle installation ou instance de base de données SQL Express ou SQL Server 2008 en utilisant la fenêtre de requête ou ouvrez le .sql script enregistré et exécutez et vous devriez voir la nouvelle base de données.

3) Maintenant, faites un clic droit sur la nouvelle base de données et sélectionnez "Tâches" "Importer des données " choisissez comme source la base de données R2 et comme destination la nouvelle base de données. "Copier les données d'une ou plusieurs tables ou vues", cochez la case du haut pour sélectionner toutes les tables et ensuite l'étape suivante, exécutez le package et vous devriez avoir tout sur une ancienne version. Cela devrait également fonctionner pour revenir à une version 2005. J'espère que cela aidera quelqu'un.

0 votes

Bonjour @motogeek, j'ai le même problème, mais j'ai le R2 sur le serveur de production et le 2008 sur le local, dans ce cas je ne peux pas utiliser l'importation et l'exportation de données. quelle serait la solution idéale pour cela ?

2voto

dinesh vishe Points 1309

Vous pouvez utiliser le BCP en entrée et en sortie pour les 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X