web-dev-qa-db-fra.com

Est-il possible de restaurer la sauvegarde de SQL Server 2008 dans SQL Server 2005?

Est-il possible de restaurer une sauvegarde d'une base de données SQL Server 2008 sur une instance de SQL Server 2005?

Je dois travailler sur un exemple d’application pour lequel la sauvegarde de la base de données est effectuée dans SQL Server 2008 . Mais je ne pourrai pas installer 2008. Donc est-il possible de restaurer cette sauvegarde en 2005?

26
Nayana Setty

Non. Il n'est pas possible de restaurer une base de données à partir d'une sauvegarde d'une version plus récente.

Si vous en êtes totalement convaincu, je pense que votre meilleure option est de sélectionner la base de données dans l'explorateur d'objets dans SQL 2008, Cliquez avec le bouton droit de la souris et sélectionnez Tâches-> Générer des scripts. Dans la boîte de dialogue Options, cliquez ici pour tout afficher, y compris les données de script.

Et assurez-vous de sélectionner "Script pour SQL 2005".

La source

Lors de l'importation des objets sur votre serveur cible, si les objets sont volumineux, vous risquez de ne pas pouvoir ouvrir le fichier SQL via Management Studio (avec une erreur totalement inutile "L'opération n'a pas pu être terminée"). Ce n'est pas grave, il suffit de charger le fichier via sqlcmd .

35
Garry Shutler

Il manque un élément important dans toutes les réponses: le fait que Générer des scripts dans SSMS ne commande pas les scripts correctement.

Les scripts doivent être ordonnés dans le bon ordre de dépendance afin que les tables enfants soient créées après les tables parent. 

Ce n'est pas un problème pour les petites bases de données où il est facile de réorganiser les scripts manuellement, mais cela peut être un problème énorme lorsqu'il s'agit de bases de données contenant plus de 100 objets.

Mon expérience est qu'il est plus pratique d'utiliser des outils tiers qui peuvent lire les sauvegardes et générer des scripts dans le bon ordre. J'utilise ApexSQL Diff et Data Diff de ApexSQL, mais vous ne pouvez pas vous tromper avec un fournisseur populaire. 

6
Monte Chavis

Non, pas directement. Les sauvegardes de base de données SQL Server 2008 ne sont pas rétrocompatibles avec SQL Server 2005. Toutefois, avec SQL Server 2008 Management Studio, vous pouvez créer un script de données et de schémas en mode SQL Server 2005. Cet article décrit le processus en détail.

5
Mitch Wheat

Oui c'est possible

Utilisation de l’exportation dans SQL Server 2008. Accédez à All Programs -> Microsoft SQL Server 2008 -> Import and Export Data

  • Ensuite, la fenêtre SQL Server Import AND Export Wizard sera ouverte. Appuyez sur Next

  • Choisissez une source de données (dans votre cas, à partir de SQL Server 2008). Choisissez une destination (dans votre cas, à partir de SQL Server 2005). 

  • Sélectionnez Copy data from one or more tables or view

  • Sélectionner les tables de la source et de la destination

  • Cliquez sur Next & Finish 

compléter.

4
Hazem Fergany

J'ai ce problème depuis longtemps.

Vous ne pouvez pas restaurer les sauvegardes SQL2008 sur une instance SQL2005.

Et pour moi, les solutions de contournement telles que l'importation/exportation de wizzard ou la création de scripts pour la base de données à partir de SQL2008 à l'aide des scripts de génération avec l'option for for SQL2005 ne fonctionneront pas . ou udfs. Ils ne relèvent pas entièrement de ma responsabilité et je ne peux donc pas les regrouper dans 1 base de données . Ils constituent un ensemble de 6 dbs qui se réfèrent les uns aux autres directement dans leurs vues et procédures stockées . Lorsque je les transfère d'un Instance SQL2005 sur une autre, je fais généralement une sauvegarde complète/restauration.

Si je devais les scripter, même avec l'option with dependencies, j'obtiendrais des erreurs au moment de la re-création car db1 ne trouverait pas de vues dans db3 car il est arrivé que j'ai d'abord exécuté le script create db1. Si j'ai d'abord essayé db3, j'obtiens des exceptions similaires.

La seule façon de les scripter pour ne pas avoir de telles exceptions de dépendance est de trouver une séquence qui fonctionne et de les scripter partiellement de cette manière: say: db1_tables suivi de db2_tables suivi de db2_views suivi de db1_views, sp, udfs, etc. .

J'ai une telle séquence. Et quand j'ai besoin de créer un nouvel ensemble de ces 6 dbs, j'ai exécuté les scripts partiels les plus petits en séquence.

Cela explique pourquoi les scripts de génération, avec dépendances, avec données et paramétrés sur les scripts de version SQL2005, ne fonctionneront tout simplement pas pour moi.

Le wizzard import/export est meilleur dans mon cas car il va copier les tables et ensuite vous devez toujours écrire toutes les vues, sp, udfs, etc.

Ce dont j'ai vraiment besoin, c'est d'un outil de conversion pour les fichiers de sauvegarde SQL2008, afin de les convertir au format SQL2005. Ensuite, mon problème disparaîtra ... ou une sorte d’outil permettant de restaurer des fichiers de sauvegarde complète SQL2008 sans me poser trop de questions.

Si quelqu'un connaît de tels outils et les a utilisés, faites le moi savoir.

4
scorpiophd

Vous pouvez utiliser DBSave , c’est un excellent outil gratuit pour sauvegarder et restaurer le serveur MS SQL sur différentes machines . Il est très simple à installer et à utiliser.

1
MP1963

N'ayant aucune chance avec le truc Import/Export (les exportations de fichiers à plat échouaient lors de l'importation de problèmes de mappage de jeu de caractères [même si le même jeu de caractères était utilisé dans tous les cas] et/ou de problèmes de troncature [même si la structure source et la destination avaient exactement la même pas de chance avec l’option "générer des scripts" suggérée par Garry Shutler (il a généré un script avec des erreurs de syntaxe), j’étais enfin capable de copier le grand tableau que je voulais copier de 2008 à 2005 à l’aide de l’utilitaire SQL Server bcp . C’est donc une autre option pour cette situation, bien que pour une base de données entière, ce soit une table à la fois et n’aide probablement pas les vues, etc.

Les étapes que j'ai suivies:

  1. Sur le serveur source, utilisez "Table de script en tant que ... CREATE" pour obtenir la structure, exécutez-la sur le serveur cible.

  2. Sur le serveur cible, créez un fichier au format bcp à l'aide du tableau que vous venez de créer:

    bcp database.owner.table format nul -f table.fmt -n

    (Si vous n'utilisez pas l'authentification Windows, vous aurez peut-être besoin des options -U et -P pour spécifier le nom d'utilisateur et le mot de passe.)

  3. Copiez ce fichier de format sur le serveur source (si nécessaire).

  4. Exportez les données dans un fichier sur le serveur source:

    bcp database.owner.table out table.dat -f table.fmt

    (Encore une fois, éventuellement avec -U et -P.)

  5. Copiez le fichier de données sur le serveur cible (si nécessaire).

  6. Importez les données sur le serveur cible:

    bcp database.owner.table dans table.dat -f table.fmt

    (Encore une fois, éventuellement avec -U et -P.)

Dans l'espoir que cela s'avère utile à quelqu'un d'autre.

0
T.J. Crowder

Non, vous ne pouvez pas, mais des outils tels que SQL Compare/Data Compare de Red Gate peuvent lire les fichiers de sauvegarde directement et transférer les informations dans une base de données dynamique, en gérant toute syntaxe ou tout paramètre incompatible avec SS2005.

0
thecoop