最初来自SQL Server 2008的数据库已还原到SQL Server 2012.从SQL Server 2012进行了备份,我正在尝试在本地SQL Server 2008 Express上还原它。但是我收到错误'指定的强制转换无效'(SQLManagerUI)。
我已经从2012年生成了一个SQL脚本,并将其设置为与SQL Server 2008兼容生成。但它是一个大型的sql文件,大约700mb。
我记得之前我曾尝试在我的本地SQLExpress上运行那个大小的脚本,但也出错了。
有没有办法让SQL Server 2012中的“大型”数据库进入SQL Server 2008 Express?
答案 0 :(得分:21)
感谢Marc和Aaron提供答案。
快速回答是否定的,无法将备份文件从较高版本还原到较低版本的SQL Server。
解决方法是生成脚本以创建数据库。
您可以将脚本生成定位到较低版本。
请参阅上面的评论以获取更多信息。
链接:
答案 1 :(得分:3)
添加一些可能对人们有帮助的事情
在SSMS中使用脚本向导编写大型数据库脚本时,检查执行顺序并愿意手动重新排列是非常重要的。较旧版本的SSMS存在此问题,因为它们(可能)依赖于具有sp_depends的bug。
我发现在这种情况下真正有用的是像ApexSQL Diff这样的工具,您可以使用这些工具来读取数据库备份并生成执行顺序正确的脚本。
SQL Server database backup restore on lower version
Aaron提到的关于使用特定于更高版本的函数的事情,没有一个方法可以捕获的东西。
答案 2 :(得分:1)
比使用SSMS脚本向导更好的选择是使用Codeplex上可用的类似工具SQL Database Migration Wizard - http://sqlazuremw.codeplex.com/releases/view/32334。您希望最新版本v4.x与SQL Server 2012一起使用。
该工具最初用于在SQL Server和Azure之间迁移数据库。但是,该工具与SQL Server和SQL Server之间的工作方式一样。诀窍是将SQL Server而不是Azure设置为高级选项中的目标。
这是比SSMS脚本向导更好的选择,因为它使用BCP进行数据传输而不是TSQL,因此效率更高。