web-dev-qa-db-fra.com

Comment restaurer un fichier de sauvegarde de base de données (.bak) de SQL Server 2012 dans SQL Server 2008 Express?

Une base de données originaire de SQL Server 2008 a été restaurée dans SQL Server 2012. Une sauvegarde de SQL Server 2012 a été effectuée et j'essaie de la restaurer sur mon SQL Server 2008 Express local. Cependant, j'obtiens une erreur "Le cast spécifié n'est pas valide" (SQLManagerUI).

J'ai généré un script SQL à partir de 2012 et je l'ai configuré de manière à ce qu'il soit compatible avec SQL Server 2008. Cependant, il s'agit d'un gros fichier sql, d'environ 700 Mo.

Je me souviens auparavant que j'avais déjà essayé d'exécuter un script de cette taille sur mon SQLExpress local et que j'avais également une erreur.

Existe-t-il un moyen d'obtenir une "grande" base de données de SQL Server 2012 dans SQL Server 2008 Express?

23
stormwild

Merci à Marc et Aaron d'avoir fourni les réponses.

La réponse rapide est non, il n'est pas possible de restaurer un fichier de sauvegarde d'une version supérieure vers une version inférieure de SQL Server.

Une solution consiste à générer les scripts pour créer la base de données.

Vous pouvez cibler la génération de script vers une version inférieure.

Veuillez consulter les commentaires ci-dessus pour plus d'informations.

Liens:

Pourquoi une base de données SQL Server d'une version supérieure ne peut pas être restaurée sur une version inférieure de SQL Server?

Créer une base de données dans SQL Server 2012, Script et utilisation en 2008?

21
stormwild

Quelques choses à ajouter qui pourraient être utiles aux gens

Lors du scriptage de grandes bases de données à l'aide de l'assistant de scriptage dans SSMS, il est vraiment important de vérifier l'ordre d'exécution et de vouloir le réorganiser manuellement. Les anciennes versions de SSMS avaient ce problème parce qu'elles s'appuyaient (probablement) sur sp_depends qui a un bug .

Ce que j'ai trouvé vraiment utile dans de tels cas, ce sont des outils comme ApexSQL Diff que vous pouvez utiliser pour lire les sauvegardes de bases de données et générer des scripts qui sont dans un ordre d'exécution correct.

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

Une chose qu'aucune des méthodes n'attrapera est celle qu'Aaron a mentionnée à propos de l'utilisation de fonctions spécifiques à la version supérieure.

3
Jaycob Read

Une meilleure option que d'utiliser l'assistant de script SSMS consiste à utiliser un outil similaire disponible sur Codeplex appelé SQL Database Migration Wizard - http://sqlazuremw.codeplex.com/releases/view/32334 . Vous voulez que la dernière version v4.x fonctionne avec SQL Server 2012.

L'outil est initialement destiné à être utilisé pour la migration de bases de données entre SQL Server et Azure. Cependant, l'outil fonctionne aussi bien qu'entre SQL Server et SQL Server. L'astuce consiste à définir SQL Server plutôt qu'Azure comme cible dans les options avancées.

La raison pour laquelle il s'agit d'une meilleure option que l'assistant de script SSMS est qu'il utilise BCP pour le transfert de données plutôt que TSQL et est donc beaucoup plus efficace.

1
Brian Towers