2010-02-10 4 views
1

Nous avons des clients intéressés à envoyer leurs données Sql 2008 à d'autres clients avec SQL 2000. Maintenant, évidemment, cela ne fonctionne pas actuellement, donc je tente de créer un "générique" processus de sauvegarde qui nous permet de sauvegarder et de restaurer nos données sur le serveur 2000 et plus (puisque SQL2000 est le dénominateur le moins commun de tous les clients). En ce moment, nous générons nos sauvegardes de cette façon (C#):Sauvegarde SQL 2008 DB à restaurer sur SQL 2000 .NET

Server server = new Server(GetServerConnection(serverName, userName, password)); 
Backup backup = new Backup(); 
backup.Action = BackupActionType.Database; 
backup.Database = GetDatabasePrefix() + databaseName; 
backup.Devices.AddDevice(fileName, DeviceType.File); 
backup.Initialize = true; 

backup.SqlBackup(server); 

Ma première question est, est-il possible de « forcer » la sauvegarde à exécuter en tant que SQL 2000, même si la base de données est SQL 2005 ou 2008?

En outre, nous pensions éviter cela en utilisant la procédure bcp sur la base de données pour emballer et décompresser les tables et les compresser ensemble. Dans le processus zip, je mettrais un drapeau d'en-tête pour déclarer une sauvegarde "générique". Cela semble-t-il raisonnable, ou existe-t-il une façon plus simple de le faire? Comme l'application est la même quel que soit le serveur, toutes les colonnes et tables doivent être identiques. Merci pour l'aide!

Répondre

5

Si vous ne portez que des données, BCP ou un package SSIS personnalisé ressemble à vos options les plus probables qui seront réutilisables. Vous pouvez jeter un oeil à l'assistant d'importation/exportation SSIS, il est assez simple à utiliser et peut accomplir ce que vous voulez.

2

Il n'est pas possible de restaurer une sauvegarde à partir d'une version plus récente de SQL Server vers une version antérieure.

Vous pouvez générer SSMS 2000 scripts SQL de SSMS 2008:

  • Outils ouverts -> Options dans SSMS 2008
  • Aller à SQL Server Object Explorer -> Scripting
  • Set « Script pour la version serveur "2000
  • clic droit de votre base de données, choisissez Tâches -> Générer des scripts
  • Script tous les objets de votre base de données
  • Exécutez le script sur votre serveur 2000

redirigent ensuite les serveurs ensemble, et copier les données comme:

insert ChefDb.dbo.MyTable from ChefServer.ChefDb.dbo.MyTable 

Vous pouvez également envisager l'achat d'RedGate SQL Data Compare.

+0

J'apprécie la réponse détaillée, mais mon objectif principal est d'utiliser cette fonctionnalité par programme. Je ne peux pas demander à nos clients de le faire, je dois fournir les moyens dans notre application. – Kevin

Questions connexes