我们有兴趣将他们的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过程中,我将一个标题标志声明为“通用”备份。这看起来是否合理,或者有更简单的方法吗?由于应用程序与服务器无关,因此所有列和表都应相同。谢谢你的帮助!
答案 0 :(得分:5)
如果您仅移植数据,BCP或自定义SSIS包听起来像您最有可能重复使用的选项。您可能想要查看SSIS导入/导出向导,它使用起来非常简单,可以完成您想要的任务。
答案 1 :(得分:2)
无法将备份从较新版本的SQL Server还原到旧版本。
您可以从SSMS 2008生成SSMS 2000 SQL脚本:
然后将服务器链接在一起,并复制数据,如:
insert ChefDb.dbo.MyTable from ChefServer.ChefDb.dbo.MyTable
或者,考虑购买RedGate SQL Data Compare。