J'ai une base de données sur une instance SQL Sever 2012 que je voudrais copier sur un serveur 2008. Le serveur 2008 ne peut pas restaurer les sauvegardes créées par un serveur 2012 (j'ai essayé).
Je ne trouve aucune option en 2012 pour créer une sauvegarde compatible 2008. Suis-je en train de manquer quelque chose?
Existe-t-il un moyen facile d'exporter le schéma et les données vers un format indépendant de la version que je peux ensuite importer en 2008?
La base de données n'utilise aucune fonctionnalité spécifique à 2012. Il contient des tables, des données et des procédures stockées.
Voici ce que j'ai essayé jusqu'à présent
J'ai essayé Tâches → Générer des scripts sur le serveur 2012 et j'ai pu générer le schéma (y compris les procédures stockées) en tant que script SQL. Cependant, cela n'a inclus aucune des données.
Après avoir créé ce schéma sur ma machine 2008, j'ai pu ouvrir l'assistant "Exporter les données" sur la machine 2012, et après avoir configuré 2012 comme machine source et 2008 comme machine cible, on m'a présenté une liste de tableaux que j'ai pourrait copier. J'ai sélectionné toutes mes tables (300+) et j'ai cliqué sur l'assistant. Malheureusement, il passe beaucoup de temps à générer ses scripts, puis échoue avec des erreurs comme «Échec de l'insertion dans la colonne en lecture seule« FOO_ID »».
J'ai également essayé le "Copier l'assistant de base de données", qui prétendait pouvoir copier "de 2000 ou plus tard à 2005 ou plus tard". Il a deux modes:
"Détacher et attacher", qui a échoué avec une erreur:
Message: Index was outside the bounds of the array. StackTrace: at Microsoft.SqlServer.Management.Smo.PropertyBag.SetValue(Int32 index, Object value) ... at Microsoft.SqlServer.Management.Smo.DataFile.get_FileName()
Méthode d'objet de gestion SQL qui a échoué avec une erreur
Impossible de lire la propriété IsFileStream. Cette propriété n'est pas disponible sur SQL Server 7.0. "
Réponses:
Faites un clic droit sur la base de données dans 2012 SQL Management Studio et choisissez "Tâches -> Générer des scripts". Cliquez devant l'écran de bienvenue, choisissez "Script de la base de données entière et de tous les objets de base de données". Sur la page "spécifier comment les scripts doivent être enregistrés", cliquez sur "avancé". Sous "Général" dans la page des propriétés contextuelles, remplacez "Types de données à script" de "Schéma uniquement" par "Schéma et données" et modifiez "Script pour la version du serveur" de "2012" à "2008".
J'ai ensuite dû trouver un moyen d'éditer le début de ce fichier SQL massif, pour modifier la façon dont la base de données serait créée - voir ce q: https://stackoverflow.com/questions/102829/best-free-text-editor -soutien à plus de 4 Go de fichiers
Et enfin, j'ai dû trouver un moyen d'exécuter le script SQL, qui était trop volumineux pour être ouvert dans SQL Management Studio - voir ce q: https://stackoverflow.com/questions/431913/how-do-you-run- fichier-300mb-ms-sql-sql
la source
Pour les migrations SQL, utilisez l'assistant de migration de base de données SQL gratuit et open source.
J'avais une base de données de 5 Go avec environ 10 millions d'enregistrements et j'ai essayé l'itinéraire via Generate Script et je l'ai exécuté avec sqlcmd.exe. Tout d'abord, le script généré ne fonctionnait pas toujours correctement. Deuxièmement, sqlcmd.exe peut également échouer sur des fichiers volumineux, se plaignant de la mémoire disponible. osql.exe fonctionne, mais prend juste des âges (et a les mêmes arguments de ligne de commande).
Puis je suis tombé sur un merveilleux outil pour migrer SQL Server vers des bases de données SQL Azure. Cela fonctionne également pour SQL Server vers SQL Server, par exemple si vous souhaitez migrer une base de données SQL 2012 vers 2008 R2. Il utilise bcp.exe, qui utilise une copie en bloc. Il existe une interface graphique et une version en ligne de commande (Batch) disponibles et c'est open source. Voir http://sqlazuremw.codeplex.com/ . Dans mon cas, l'opération a duré 16 minutes.
Dans un écran avancé, vous pouvez sélectionner que votre cible est SQL Server, et non SQL Azure.
la source
Je suis nouveau sur SQL, mais j'ai réussi à migrer de 2012 à 2008. Pour ce faire, j'ai utilisé l'utilitaire d'importation et d'exportation SQL. J'ai choisi le serveur SQL 2012 et la base de données que je souhaite migrer et enfin le serveur 2008 et créé une nouvelle base de données comme base de destination. Ça a marché.
la source
Essayez les outils APEXSQL . Ils ont un outil qui scriptera la base de données et scriptera également les données.
la source
Le problème est qu'il n'est pas en mesure d'insérer les colonnes ID, donc:
la source
J'ai suivi la solution de Rich https://superuser.com/a/469597/312310 ci-dessus et cela a très bien fonctionné! Merci - je ne peux pas encore voter ici!
Les étapes supplémentaires que j'ai dû faire pour que cela fonctionne sont:
Modifiez les noms de fichiers logiques et assurez-vous que le chemin d'accès est correct. J'ai également dû changer le nom du journal généré, sinon il a essayé d'écraser le fichier mdf avec le journal, puis a jeté cette erreur https://stackoverflow.com/questions/7534664/sql-server-script-error-database-is- déjà utilisé
J'ai dû commenter la section générée et ajouter manuellement les autorisations utilisateur par la suite
Ran it up, et voilà, je peux maintenant restaurer ma nouvelle base de données Umbraco 7.1.2 sur mon serveur Web qui ne dispose que de SQL Server 2008 R2!
la source
Jetez un oeil à xSQL Schema Compare et xSQL Data Compare . Vous pouvez d'abord synchroniser le schéma avec la comparaison de schémas, puis copier les données.
Avertissement: je suis affilié à xSQL.
la source