如何将SQL Server 2012数据库还原到SQL Server 2008 R2?

use*_*047 30 sql database sql-server sql-server-2008-r2 sql-server-2012

我正在尝试将从SQL Server 2012中获取的备份还原到SQL Server 2008 R2,并且它会出错

指定演员表无效.(SqlManagerUI)

如果您有任何解决方案,请发表评论

谢谢.

Moo*_*ght 41

注意,上面的一些答案是大概过时的!这可以在SQL SERVER MANAGEMENT STUDIO中完成(SQL MS)


您可以采用多种方法来"降级"数据库,但我最近发现并且我认为在SQL MS 2012的早期版本中找不到的是复制数据库向导.以下是如何将数据库从2012服务器实例复制到2008 R2实例:

  1. 在2012年的实例中,右键单击要复制/"降级"的数据库,然后选择"任务">"复制数据库...".

  2. "欢迎使用"复制数据库向导",单击[下一步].

  3. "选择源服务器":将"源服务器"设置为2012实例(或更高版本的服务器实例),并设置相应的身份验证.点击下一步].[注意.必须运行服务器代理服务]

  4. "选择目标服务器:"将"目标服务器"设置为2008 R2(或更低版本实例),并设置相应的身份验证.点击下一步].[注意.必须运行服务器代理服务]

  5. "选择传输方法"为了本示例,选择"使用SQL管理对象方法",单击[下一步].

  6. 选择移动或复制所需的数据库,单击[下一步].

  7. 配置目标数据库路径和逻辑名称等.如果数据库存在,请选择所需选项.点击下一步].

  8. 配置集成服务包,单击[下一步].

  9. 对于此示例,请选择"计划包"选项的"立即运行"选项,单击[下一步].

  10. "完成向导",单击[完成]以执行包并创建"降级"数据库.

你完成了,快乐的日子.:]


我发现的另一种方法是由Microsoft创建的SQL数据库迁移向导,我认为(我不知道)上面的向导是从中创建的.在这里http://sqlazuremw.codeplex.com/.要使用此程序包将数据库从SQL Server 20012迁移到2008 R2,您可以执行以下操作:

注意.Microsoft现已从Codeplex中删除了SQLAzureMW.我曾亲自将其提供在这里

  1. 运行SQLAzureMW.exe.

  2. 从主窗口的右侧选择Analyze/Migrate单选按钮.

  3. 选择目标服务器为"SQL数据库最新服务版本(V12)".点击下一步].

  4. 连接到SQL Server 2012实例.我的机器的服务器名称是"VAIOE\SQLSERVER2012",使用Windows身份验证,从数据库选项和"保存登录信息"中选择"主数据库(列出所有数据库)".单击[连接].

  5. 选择要迁移的所需数据库[立即使用GVH报告数据库].点击下一步].

  6. 选择"脚本所有数据库对象".

  7. 单击[高级]并更改以下选项:

一个.在General下将"Target Server"设置为"SQL Server".

湾 在"表/视图选项"下,将"脚本表/数据"设置为"带有数据的表格模式".将"数据库引擎存储过程"设置为"True".将"安全功能","安全存储过程"和"系统功能"设置为"真".

单击[确定].点击下一步].

  1. 检查您的选择.点击下一步].

  2. 系统将提示您"准备生成脚本?",单击[是].这将启动脚本生成.完成后,单击[下一步].

  3. 现在您将获得另一个连接对话框.这次选择目标服务器(SQL Server 2008 R2实例)上的数据库.选择主数据库,以便选择目标数据库.单击[连接].

  4. 现在,您可能希望迁移到新数据库,因此请单击[创建数据库].

  5. 输入数据库目标名称并将"排序规则"保留为"",这与我们无关.单击[创建数据库].点击下一步].

  6. 现在将提示您"对目标服务器执行脚本?",单击[是].

  7. 现在,这将使用生成的脚本设置架构,但是不同于我们发现的先前方法,数据是使用BCP批量加载的,这非常快.所有这些都是在内部完成的,因此不会产生大量的.sql脚本文件等.

  8. 单击[退出].

你完成了.现在,如果您打开Management Studio并连接到我们刚刚使用的SQL Server 2012和2008 R2实例,您可以看到2012源数据库的架构与刚刚创建的目标数据库匹配.


上述两个过程几乎相同,并提供相同的功能.除非您特别需要迁移到Azure或方法1失败,否则我不会执行后者.

我希望这可以帮助别人.

  • 为什么选择downvote?以上是对的! (2认同)

小智 12

右键单击数据库,然后选择"任务" - >"生成脚本"

选择要还原的内容,或者只是默认选中完整的数据库.

现在单击Next - >单击Advanced并选择'Script for Server Version'到要恢复的'ssms版本',如2008或2008 R2或其他.

另外,选择"脚本数据类型"为"架构和数据"

最后在目标ssms上执行此.sql文件并在第一行使用数据库中更改数据库名称

如果没有数据库则创建一个,如果执行脚本时出错,请执行alter keyword中的脚本以完成底部.


SQL*_*ace 9

你不能,你永远不能从更高版本恢复到较低版本的SQL Server.您唯一的选择是编写数据库脚本,然后通过SSIS,BCP,链接服务器或脚本输出数据传输数据


Hie*_*ieu 8

致:Killercam感谢您的解决方案.我尝试了第一个解决方案一小时,但对我没用.

我使用脚本生成方法将数据从SQL Server 2012移动到SQL Server 2008 R2,如下所示:

在2012 SQL Management Studio中

  1. 任务 - >生成脚本(在第一个向导屏幕中,单击下一步 - 可能不显示)
  2. 选择脚本整个数据库和所有数据库对象 - >下一步
  3. 单击[高级]按钮3.1将[数据类型更改为脚本]从"仅模式"更改为"模式和数据"3.2将[服务器版本的脚本]"2012"更改为"2008"
  4. 完成下一个向导步骤以创建脚本文件
  5. 使用sqlcmd将导出的脚本文件导入SQL Server 2008 R2 5.1打开Windows命令行5.2键入[sqlcmd -S -i文件路径](例如:[sqlcmd -S localhost -i C:\ mydatabase.sql])

这个对我有用.