23

最初来自 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?

4

3 回答 3

21

感谢 Marc 和 Aaron 提供答案。

快速回答是否定的,不可能将备份文件从较高版本的 SQL Server 还原到较低版本的 SQL Server。

一种解决方法是生成脚本来创建数据库。

您可以将脚本生成定位到较低版本。

请参阅上面的评论以获取更多信息。

链接:

为什么高版本的 SQL Server 数据库无法恢复到低版本的 SQL Server 上?

在 SQL Server 2012 中创建数据库,在 2008 年编写和使用?

于 2012-05-28T09:20:49.530 回答
3

添加一些可能对人们有帮助的东西

在 SSMS 中使用脚本向导为大型数据库编写脚本时,检查执行顺序并愿意手动重新安排它非常重要。旧版本的 SSMS 有这个问题,因为它们(可能)依赖于有bug的sp_depends

我发现在这种情况下真正有用的是ApexSQL Diff之类的工具,您可以使用它来读取数据库备份并生成按正确执行顺序执行的脚本。

较低版本上的 SQL Server 数据库备份还原

任何方法都无法捕捉到的一件事是 Aaron 提到的关于使用特定于更高版本的函数的事情。

于 2013-09-10T15:18:01.020 回答
1

比使用 SSMS 脚本向导更好的选择是使用 Codeplex 上可用的类似工具,称为 SQL 数据库迁移向导 - 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 进行数据传输,因此效率更高。

于 2014-01-26T18:51:33.810 回答