locked
Restauration d'une sauvegarde dans sql server express 2005 faite avec sql server express 2008 RRS feed

  • Question

  • Bonjour,

    Quand j'essais de retaurer une bdd dans sql server express 2005 à partir d'une sauvegarde faite avec sql server express 2008 j'obtient le message d'erreur suivant : 

    TITRE : Microsoft SQL Server Management Studio Express
    ------------------------------

    Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.Express.ConnectionInfo)

    ------------------------------
    INFORMATIONS SUPPLÉMENTAIRES :

    La famille de supports sur l'unité 'C:\InstruSpace\maBdd.bak' est incorrecte. SQL Server ne peut pas la traiter.
    RESTORE HEADERONLY s'est terminé anormalement. (Microsoft SQL Server, Erreur : 3241)

    ------------------------------

    Merci d'avance pour votre aide...



    vendredi 13 février 2009 12:35

Toutes les réponses

  • Le processus de sauvegarde /restauration n'est certainement pas adapté pour tranférer des données depuis SQL server 2008 vers SQL Server 2005. Autant la compatibilité ascendante peut être assurée (2005 vers 2008) autant l'inverse me semble impossible.
    Pour information quel est ne niveau de compatibilité de votre base sauvegardé(procédure sp_dbcmptlevel)?
    dimanche 15 février 2009 22:00
  • Bonjour,

    Juste un petit ajout à l'excellent post de jero44.

    HafizB,s'il vous plait, pourriez-vous regarder ce lien ?

    http://msdn.microsoft.com/en-us/library/ms176061.aspx

    Il est en anglais ( mais à jour ). Vous trouverez ceci
    A database created by a more recent version of SQL Server cannot be attached in earlier versions. 
    The source database must be at least version 80 (SQL Server 2000) to attach to SQL Server 2008.
    SQL Server 2000 or SQL Server 2005 databases that have a compatibility level less than 80 will 
    be 
    set to compatibility 80 when they are attached 

    Pour l'instruction Restore :
    http://msdn.microsoft.com/en-us/library/ms186858.aspx
    vous trouverez ceci :
    "Backups created with Microsoft SQL Server cannot be restored to an earlier version of SQL Server"

    La seule solution est de retourner dans votre base originale ( 2008), de modifier la propriété CompatibilityLevel dans SSMS ( clic droit sur la base ==> propriétés ==> options ==> niveau de compatibilté ==> Sql Server 2005 (90) ), mais celà ne marchera pas si votre base utilise des nouveautés apparues avec Sql Server 2008 ( comme FileStream,Date,Time,...).Vous refaites une sauvegarde, votre restauration et remodifier votre niveau de compatibilité

    Bonne chance et bonne jpurnée

     
    samedi 7 mars 2009 08:00
  • bonjour,

    j'ai suivi cette manip et malheureusement j'ai toujours la même erreur ?

    est-ce sans solution ?

    merci
    olviier
    samedi 17 octobre 2009 19:34
  • Bonjour,

    Comme jero44 l'avait déjà expliqué, la solution backup/restore ne marche pas car le format des backups a changé entre SQL Server 2005 et SQL Server 2008 ( par contre, il semblerait que ce soit possible entre 2008 RTM et 2008 SP1 dans les 2 sens ).

    J'aurai bien une solution du désespoir mais il faut une machine vierge de SQL Server
    Vous installez SQL Server Express 2005 "basic" dessus ( avec le même SP que sur votre machine où vous voulez installer une copie de votre base mais sans le SSMSEE SQL Server Management Studio Express Edition, sinon vous ne pourrez installer SSMSE 2008 SQL Server Management Studio Express ). Donc pas with Tools or with Advanced Services
    Vous installez une instance de SQL Server 2008 Developer ( avec SQL Server Management Studio  environ 60€ ).
    Vous aurez donc 2 instances de SQL Server Express 2005 et Dev 2008
    Vous faites un restore à partir de votre backup sur votre instance 2008 
    Modifier le CompatibilityLevel de votre base à 9 ou 90 ( je ne sais plus )
    clic droit sur votre base restaurée 
    dans le menu conceptuel : Tâches puis exporter les données et suivez les instructions du wizard

    Il est possible que le SSMSE 2008 comporte ce wizard qui permet d'exporter la structure d'une base vers une autre base ( structure et data ).
    Malheureusement , je n'ai que mon SSMS provenant de mon SQL Server Dev 2008. Je vérifierai sur un autre poste qui a 2 instances Express 2008 si le wizard de transfert existe ( et est complet ) dans SSMSE quand ce poste sera libre ( essayez de faire bouger un jeune de 16 ans en train de jouer en ligne, ce n'est pas évident ...)

    Je posterai plus tard le résultat
    Je crois que vous pourriez (peut-être) trouver des informations à l'adresse suivante :
    http://blogs.msdn.com/sqlexpress/default.aspx

    Bonne journée
    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    dimanche 18 octobre 2009 21:42
  • Bonjour olivierolivier,

    Comme je l'ai indiqué dans mon précédent post, il est possible d'utiliser le wizard
    Pour quelques explications , voir
    http://msdn.microsoft.com/fr-fr/library/ms140052.aspx

    Je viens de faire le test entre une instance 2008 et une autre 2005 ( toutes les 2 Express RTM ) : cà marche.
    Solution :
    - disposer sur le même poste d'une instance Express 2005 et d'une instance Express 2008 ( cette dernière avec SQL Server Management Studio Express )
    - faire une restauration de votre base 2008 sur l'instance 2008 ( ca marche avec SSMSE )
    - modifier le cas échéant le CompatibilityLevel de la base restaurée ( clic droit sur la base,propriétés,options,niveau de compatibilté à 90 SQL Server 2005 )
    - clic droit sur la base,taches,exportation des données en choisissant nouvelle (base de données) pour la base de destination ( instance 2005 )

    J'ai fait l'essai avec une base AdventureWorks LT ( 2005 ) : pas de problème mais peut-être très long ( 10 minutes entre 2 PC Vista Home et XP Familiale en réseau WorkGroup )

    Bonne journée 

    PS : Il y a une autre solution pour le transfert Data/Structure avec SMO . Voir le lien
    http://msdn.microsoft.com/fr-fr/library/microsoft.sqlserver.management.smo.transfer.aspx

    Il vous faudra toujours 2 instances ( 2008 pour la restauration du backup 2008 et 2005 pour la base transférée )
    SMO est de la programmation "pure" en VB/VC# pour réaliser par programmes des tâches d'administration sur des serveurs ou des bases de données ( backups,création/modif/suppression de bases de données et de leurs objets ). Très interessant comme entraînement à l'utilisation de SQL Server PowerShell ( sqlps.exe) qui remplacera les anciens OSQL/ISQL/SQLCMD mais trop "confidentiel" 
    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    lundi 19 octobre 2009 07:35
  • merci pout vos réponses et test :)

    je vais regarder si c'est applicable chez moi

    merci
    olivier
    mardi 20 octobre 2009 10:43