2010-02-10 91 views
1

我们有意将其Sql 2008数据发送给使用SQL 2000的其他客户。现在很显然,这目前没有工作,所以我试图创建一个“通用”备份过程,使我们可以在Server 2000上备份和恢复数据(因为SQL2000是所有客户或客户中最不常见的部分)。现在,我们正在创造我们的备份这样(C#):备份SQL 2008数据库在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); 

我的第一个问题是,是否有“力”的备份运行的SQL 2000的任何方式,即使数据库是SQL 2005或2008年?

此外,我们正考虑通过使用数据库上的bcp过程来封装和解包表并将它们压缩在一起。在压缩过程中,我会放入一个标题标志以声明它是“通用”备份。这看起来是否合理,还是有更简单的方法呢?由于应用程序与服务器无关,因此所有的列和表都应该相同。谢谢您的帮助!

回答

5

如果仅移植数据,BCP或自定义SSIS包听起来就像是最可能的可重用选项。您可能需要查看SSIS导入/导出向导,使用起来非常简单,并且可以完成您想要的任务。

2

无法将备份从较新版本的SQL Server还原到较旧版本。

您可以生成SSMS从SSMS 2008 2000的SQL脚本:

  • 打开工具 - 服务器版>脚本
  • 设置“脚本 - >在SSMS选项2008
  • 进入到SQL Server对象资源管理器“到2000年
  • 右击你的数据库,选择任务 - >生成脚本
  • 脚本数据库中所有对象
  • 执行脚本的2000服务器上

然后服务器连接在一起,像复制数据:

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

另外,可以考虑购买RedGate SQL Data Compare

+0

我很欣赏详细的回复,但我的主要目标是以编程方式使用此功能。我不能要求我们的客户这样做,我需要在我们的应用程序中提供手段。 – Kevin 2010-02-10 22:15:32

相关问题