1

我们有客户有兴趣使用 SQL 2000 将他们的 Sql 2008 数据发送给其他客户。现在显然这目前不起作用,所以我正在尝试创建一个“通用”备份过程,允许我们在 Server 2000 上备份和恢复我们的数据及以上(因为 SQL2000 是所有客户中最小的公分母)。现在我们正在以这种方式生成我们的备份(C#):

 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 过程来打包和解包表并将它们压缩在一起来避免这种情况。在压缩过程中,我会放入一个标头标志以将其声明为“通用”备份。这看起来合理吗,或者有更简单的方法吗?由于无论服务器如何,应用程序都是相同的,因此所有列和表都应该相同。谢谢您的帮助!

4

2 回答 2

5

如果您只移植数据,BCP 或自定义 SSIS 包听起来是您最有可能可重用的选项。你可能想看看 SSIS 导入/导出向导,它使用起来非常简单,可以完成你想要的。

于 2010-02-10T20:03:07.660 回答
2

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

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

  • 在 SSMS 2008 中打开工具 -> 选项
  • 转到 SQL Server 对象资源管理器 -> 脚本
  • 将“服务器版本脚本”设置为 2000
  • 右键单击您的数据库,选择任务 -> 生成脚本
  • 编写数据库中所有对象的脚本
  • 在 2000 服务器上执行脚本

然后将服务器链接在一起,并复制如下数据:

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

或者,考虑购买RedGate SQL 数据比较

于 2010-02-10T19:57:06.830 回答