我们有客户有兴趣将他们的Sql 2008数据发送给其他使用SQL 2000的客户。显然,这目前不起作用,所以我尝试创建一个“通用”备份过程,允许我们在Server2000及更高版本上备份和恢复我们的数据(因为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 );我的第一个问题是,有没有办法“强制”将备份作为SQL2000运行,即使数据库是SQL2005或2008?
此外,我们正在考虑通过在数据库上使用bcp过程来打包和解包这些表,并将它们压缩在一起来避免这种情况。在压缩过程中,我放了一个头标志来声明它是一个“通用”备份。这看起来合理吗,还是有一种更简单的方法来做到这一点?由于无论服务器是什么,应用程序都是相同的,所以所有列和表都应该是相同的。谢谢你的帮助!
发布于 2010-02-11 04:03:08
如果您只移植数据,BCP或自定义SSIS包听起来像是您最可能的可重用选项。您可能想要查看SSIS导入/导出向导,它使用起来非常简单,并且可以实现您想要的功能。
发布于 2010-02-11 03:57:07
无法将备份从较新版本的SQL Server还原到较旧版本。
您可以从SSMS 2008生成SSMS 2000 SQL脚本:
Server version“设置为2000
然后将服务器链接在一起,并复制数据,如下所示:
insert ChefDb.dbo.MyTable from ChefServer.ChefDb.dbo.MyTable或者,考虑购买RedGate SQL Data Compare。
https://stackoverflow.com/questions/2239613
复制相似问题