备份SQL 2008 DB以在SQL 2000 .NET上还原

时间:2010-02-10 19:14:47

标签: .net sql-server database-backups

我们有兴趣将他们的Sql 2008数据发送给使用SQL 2000的其他客户。现在显然这不起作用,所以我试图创建一个“通用”备份过程,允许我们备份和恢复我们的数据在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过程来打包和解包表并将它们压缩在一起来避免这种情况。在zip过程中,我将一个标题标志声明为“通用”备份。这看起来是否合理,或者有更简单的方法吗?由于应用程序与服务器无关,因此所有列和表都应相同。谢谢你的帮助!

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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 Data Compare