Comment restaurer une base de données SQL Server 2012 sur SQL Server 2008 R2?

j'essaie de restaurer la sauvegarde prise à partir D'un serveur SQL 2012 à SQL Server 2008 R2, et il donne une erreur

la fonte spécifiée n'est pas valide. (SqlManagerUI)

Si vous avez une solution à cette s'il vous plaît donner de commentaire

merci.

28
demandé sur marc_s 2013-11-07 18:01:06

10 réponses

NOTE, SOME OF THE ABOVE ANSWERS ARE MASSIVEMENT OUT-OF-DATE! CELA PEUT ÊTRE FAIT ET TOUT DANS SQL SERVER MANAGEMENT STUDIO (SQL MS)


il existe de nombreuses méthodes que vous pouvez adopter pour "dégrader" une base de données, mais une que j'ai trouvé récemment et que je crois n'a pas été trouvé dans les premières versions de SQL MS 2012, est L'Assistant de base de données de copie. Voici comment vous pouvez copier une base de données à partir d'une instance server 2012 vers un R2 2008 exemple:

  1. dans l'instance de 2012, cliquez avec le bouton droit de la souris sur la base de données que vous voulez copier/"dégrader" et sélectionnez "Tâches" > "copier la base de données...".

  2. "Bienvenue dans l'Assistant Copie de Base de données", cliquez sur [Suivant].

  3. "sélectionner un serveur Source": définir le" serveur Source " comme l'instance de 2012 (ou l'instance supérieure du serveur de version), et définir l'authentification appropriée. cliquez sur [Suivant]. [Note. les services D'Agent serveur doivent être en cours d'exécution]

  4. "Sélectionnez un Serveur de Destination:" Définir le "serveur de Destination", comme l'2008 R2 (ou version inférieure exemple), et définissez l'authentification. cliquez sur [Suivant]. [Note. le Serveur des services d'un Agent doit être en cours d'exécution]

  5. "Select the Transfer Method" pour cet exemple, sélectionnez "Use the SQL Management Object method", cliquez [Suivant].

  6. sélectionnez pour déplacer ou copier les bases de données requises, cliquez [Prochain.]

  7. configurer le chemin de la base de données de destination et les noms logiques etc. Sélectionnez l'option requise si la base de données existe. Cliquez Sur [Suivant].

  8. configurer le paquet services d'intégration, cliquez sur [Suivant].

  9. pour cet exemple, sélectionnez l'option " exécuter immédiatement "pour les options" programmer le paquet", cliquez sur [Suivant].

  10. "l'Assistant", cliquez sur [Terminer] pour exécuter le package et créer les "déclassés" de la base de données.

Vous avez terminé, les jours heureux. :]


une autre méthode que j'ai trouvée était L'Assistant de Migration de base de données SQL qui a été créé par Microsoft et dont je pense (Je ne sais pas) que l'Assistant ci-dessus a été créé à partir. Get it here http://sqlazuremw.codeplex.com/. Pour utiliser ce paquet pour migrer une base de données de SQL Server 20012 à 2008 R2, vous pouvez faire ce qui suit:

Remarque. Microsoft a maintenant supprimé SQLAzureMW de Codeplex. J'ai personnellement mis à la disposition des ici

  1. Run SQLAzureMW.EXE.

  2. sélectionnez le bouton Analyser/Migrate radio du côté droit de la fenêtre principale.

  3. sélectionnez le serveur cible comme " SQL Database latest service version (V12)". Cliquez Sur [Suivant].

  4. Se connecter à L'instance SQL Server 2012. Le serveur de nom pour ma machine est "VAIOE\SQLSERVER2012", utilisez l'authentification Windows, sélectionnez" Master DB (liste de toutes les bases de données) "à partir des options de base de données et"enregistrer les informations de connexion". Cliquez Sur [Connecter].

  5. sélectionnez la base de données requise pour migrer [utilisez la base de données des rapports GVH pour le moment]. Cliquez Sur [Suivant].

  6. Sélectionner "Script tous les objets de base de données".

  7. cliquez sur [Advance] et changez les options suivantes:

un. En Général, définissez "Target Server"à" SQL Server".

B. Sous" Table/View Options", mettez " Script Table / Data "sur"Table Schema with Data". Réglez" procédures stockées dans le moteur de base de données "sur"True". Définissez "fonctions de sécurité", "procédures stockées de sécurité" et "fonctions du système"à " vrai".

cliquez sur [OK]. Cliquez Sur [Suivant].

  1. Examinez vos sélections. Cliquez Sur [Suivant].

  2. on vous demandera " prêt à générer un Script?", cliquez sur [Oui]. Cela lancera la génération du script. Une fois que cela est fait, cliquez sur [Suivant].

  3. Maintenant, vous obtiendrez un autre dialogue de connexion. Cette fois, sélectionnez la base de données sur le serveur cible (l'instance SQL Server 2008 R2). Sélectionnez la base de données maître pour que vous ayez le choix de la base de données cible. Cliquez Sur [Connecter].

  4. maintenant, il est probable que vous voulez migrer dans une nouvelle base de données, donc cliquez sur [Créer une base de données].

  5. Entrez une base de données nom de la cible et laisser la "Collation" comme le"", cela ne nous concerne pas. Cliquez Sur [Créer Une Base De Données]. Cliquez Sur [Suivant].

  6. on vous demandera maintenant d'exécuter le script contre le serveur de destination?", cliquez sur [Oui].

  7. cela va maintenant se déclencher et faire des tas de choses, mettant en place le schéma en utilisant le script généré, mais contrairement à la méthode précédente que nous avons trouvé, les données sont chargées en vrac en utilisant BCP, ce qui est extrêmement rapide. Tout cela se fait aussi à l'interne, donc pas de génération de massif .fichiers de script sql, etc.

  8. Cliquez Sur [Exit].

vous avez fini. Maintenant, si vous ouvrez Management Studio et vous connectez à la fois aux instances SQL Server 2012 et 2008 R2 avec lesquelles nous venons de travailler, vous pouvez voir que le schéma de la base de données source 2012 correspond à la base de données cible qui vient d'être créée.


les deux processus ci-dessus sont presque identiques et offrent la même fonctionnalité. Je n'effectuerait pas ce dernier sauf si vous avez spécifiquement besoin de migrer vers Azure ou la méthode 1 échoue pour vous.

j'espère que cela aide quelqu'un.

35
répondu MoonKnight 2018-01-23 15:46:20

faites un clic droit sur votre base de données et sélectionnez Tâches - > générer des Scripts

sélectionnez les choses que vous voulez restaurer ou laissez simplement la base de données complète être sélectionnée par défaut.

maintenant cliquez sur Suivant - > cliquez sur Avancé et choisissez 'Script for Server Version' dans la 'version ssms' que vous voulez restaurer comme 2008 ou 2008 R2 ou autre.

aussi, sélectionnez le type de données à un script " à "un Schéma et des Données'

Enfin exécuter cette .fichier sql sur la destination ssms et Changement de Nom de Base de données dans la première Ligne de l'Utilisation de la Base de données

si la base de données n'est pas là, créez-en une et si vous avez une erreur en exécutant le script exécutez le script de alter keyword à complete bottom.

12
répondu Dheeraj Sharma 2014-11-06 18:49:04

vous ne pouvez pas, vous ne pouvez jamais restaurer d'une version supérieure à une version inférieure de SQL Server. Votre seule option est de script sur la base de données et ensuite transférer les données via SSIS, BCP, serveur lié ou scripting sur les données

7
répondu SQLMenace 2015-04-24 17:14:21

To: Killercam Merci pour vos solutions. J'ai essayé la première solution pendant une heure, mais ne fonctionne pas pour moi.

j'ai utilisé la méthode de génération de scripts pour déplacer les données de SQL Server 2012 à SQL Server 2008 R2 comme étapes ci-dessous:

dans le studio de gestion SQL 2012

  1. tâches -> générer des Scripts (dans le premier écran de l'Assistant, cliquez sur Suivant-mai ne pas afficher)
  2. Choisir un Script de base de données et tous les objets de base de données -> Suivant
  3. Cliquez sur Bouton [avancé] 3.1 remplacer [les Types de données par des scripts] "schéma seulement" par "schéma et données"" 3.2 modifier [Script pour la Version Serveur] "2012" en "2008"
  4. Terminer prochaines étapes de l'assistant de création de fichier de script
  5. utilisez sqlcmd pour importer le fichier de script exporté vers votre serveur SQL 2008 R2 5.1 ligne de commande Open windows 5.2 Tapez [chemin sqlcmd-S-i vers votre fichier] (Ex: [sqlcmd-s localhost-i C:\mydatabase.sql])

ça marche pour moi.

4
répondu Hieu 2016-08-17 03:56:06

Vous ne serez pas en mesure de restaurer à partir d' 20122008. Vous serez en mesure d'utiliser un outil comme red-gate SQL compare pour copier le schéma etc (à condition que rien de spécifique 2012 ne soit utilisé). Si vous avez des données à copier trop, vous pouvez utiliser leurs Data Compare outil, et je pense que vous obtenez un essai gratuit de 14 jours.

2
répondu christiandev 2013-11-07 14:06:28

Le seul moyen intégré pour " déclassement " une base de données à partir d'une version de serveur SQL vers une version inférieure est la manière dure: Script sur l'ensemble de la base de données, schéma et données, puis d'exécuter le script sur le serveur cible.

C'est faisable, mais a tendance à être brutal.

1
répondu RBarryYoung 2013-11-07 14:08:41

comme cela a déjà été mentionné, vous ne pouvez pas utiliser les fonctionnalités "Back up" et "Restore" pour passer d'une base de données SQL Server 2012 à une base de données SQL Server 2008. Un programme que j'ai écrit, SQL Server Scripter, se connecte cependant à une base de données SQL Server et script une base de données, son schéma et ses données. Il peut être cloné à partir de BitBucket, et compilé avec Visual Studio 2010 ou une version ultérieure (si C'est une version ultérieure, ouvrez simplement le .csproj).

0
répondu Jez 2015-04-30 13:21:21

Voici une autre option qui a fait l'affaire pour moi: https://dba.stackexchange.com/a/44340

J'y ai utilisé Option B. Ce n'est pas mon idée, donc tout le crédit va à l'auteur original. Je le mets juste ici aussi car je sais que parfois les liens ne fonctionnent pas et il est recommandé d'avoir l'histoire complète à portée de main.

Juste un conseil de ma part: d'Abord résoudre le schéma incompatibilités éventuelles. Alors verser les données devrait être un brise.


Option A: Script de base de données en mode de compatibilité à l'aide de Générer des options de script:

Note: Si vous scriptez la base de données avec le schéma et les données, selon la taille de vos données, le script sera massif et ne sera pas manipulé par SSMS, sqlcmd ou osql (pourrait être en GB aussi bien).

enter image description here

Option B:

Premier script tableaux premier avec tous les Index, FK, etc et créer des tables Vierges dans la base de données de destination - option avec Schéma seulement (Pas de données).

utiliser BCP pour insérer des données

I. BCP out les données en utilisant le script ci-dessous. Définissez SSMS en mode texte et copiez la sortie générée par le script ci-dessous dans un fichier bat.

-- save below output in a bat file by executing below in SSMS in TEXT mode

-- clean up: create a bat file with this command --> del D:\BCP\*.dat 

select '"C:\Program Files\Microsoft SQL Server0\Tools\Binn\bcp.exe" ' /* path to BCP.exe */
    +  QUOTENAME(DB_NAME())+ '.' /* Current Database */
    +  QUOTENAME(SCHEMA_NAME(SCHEMA_ID))+'.'            
    +  QUOTENAME(name)  
    +  ' out D:\BCP\'  /* Path where BCP out files will be stored */
    +  REPLACE(SCHEMA_NAME(schema_id),' ','') + '_' 
    +  REPLACE(name,' ','') 
    + '.dat -T -E -SServerName\Instance -n' /* ServerName, -E will take care of Identity, -n is for Native Format */
from sys.tables
where is_ms_shipped = 0 and name <> 'sysdiagrams'                       /* sysdiagrams is classified my MS as UserTable and we dont want it */
/*and schema_name(schema_id) <> 'unwantedschema'    */                             /* Optional to exclude any schema  */
order by schema_name(schema_id)

II. Lancez le fichier bat qui générera le .fichiers dat dans le dossier que vous avez spécifié.

III. Exécuter le script ci-dessous sur le serveur de destination avec SSMS en mode texte encore.

--- Execute this on the destination server.database from SSMS.

--- Make sure the change the @Destdbname and the bcp out path as per your environment.

declare @Destdbname sysname
set @Destdbname = 'destinationDB' /* Destination Database Name where you want to Bulk Insert in */
select 'BULK INSERT '
/*Remember Tables must be present on destination database */ 
+ QUOTENAME(@Destdbname) + '.' 
+ QUOTENAME(SCHEMA_NAME(SCHEMA_ID)) 
+ '.' + QUOTENAME(name) 
+ ' from ''D:\BCP\' /* Change here for bcp out path */ 
+ REPLACE(SCHEMA_NAME(schema_id), ' ', '') + '_' + REPLACE(name, ' ', '') 
+ '.dat'' with ( KEEPIDENTITY, DATAFILETYPE = ''native'', TABLOCK )' 
+ char(10) 
+ 'print ''Bulk insert for ' + REPLACE(SCHEMA_NAME(schema_id), ' ', '') + '_' + REPLACE(name, ' ', '') + ' is done... ''' 
+ char(10) + 'go'
from sys.tables
where is_ms_shipped = 0
and name <> 'sysdiagrams' /* sysdiagrams is classified my MS as UserTable and we dont want it */
--and schema_name(schema_id) <> 'unwantedschema' /* Optional to exclude any schema */
    order by schema_name(schema_id)

IV. Exécutez la sortie en utilisant SSMS pour insérer de nouveau des données dans les tableaux.

c'est la méthode BCP très rapide puisqu'elle utilise le mode natif.

0
répondu Angel Naydenov 2017-11-17 13:17:59

fusionner la réplication. Vous pouvez créer l'abonné (2008) du distributeur (2008). Une fois la base de données entièrement synchronisée, supprimez l'abonnement et la publication.

-1
répondu akarizzo 2015-11-06 21:56:32

si vous êtes dans le même réseau, ajoutez le serveur de destination à MS Server management studio en utilisant se connecter option et ensuite essayer d'exporter de la source à la destination. Le plus simple :)

-1
répondu Cjo 2016-07-12 08:12:39