2009-11-16 201 views
5

我必须将整个数据库从SQL Server 2008计算机移动到SQL Server 2000计算机。将SQL Server 2008数据库还原到SQL Server 2000

我使用Management Studio 2008创建了一个备份,将其复制到了2000盒的硬盘中,并且从Management Studio 2008开始,我选择了恢复数据库到2000盒。

我收到一条错误消息,指出“设备上的媒体系列...不正确,SQL Server无法恢复此媒体系列”。

如果我使用Enterprise Manager 2000,则会得到相同的错误。

有没有办法将整个数据库从较新的SQL服务器移动到较旧的?

回答

10

我能想到的唯一的事情就是重新创建整个结构,然后从实时数据库复制数据。因此,创建将创建表,视图和sp的脚本,然后创建脚本以复制现有数据库中的数据。

+1

我刚刚完成了这个工作。我发现要做到这一点的唯一方法是脚本化整个数据库(包括数据)并在目标机器上运行脚本。现在,这是一个痛苦,因为2008 DB可能会创建一个不会在2000年运行的脚本(当然,我也可以),因此在2000年运行之前需要编辑生成的脚本。在开始之前先备好Tylenol。祝你好运。 – BoltBait 2009-11-16 21:32:40

+4

是的,那是唯一的方法。 SQL Server从未向后兼容,例如您从未能够将较新的版本恢复到较旧的服务器。我不认为这可能会改变 – 2009-11-16 21:53:20

0

我听说您只能通过从数据库管理员工具生成SQL语句转储并在目标旧数据库上重新运行这些查询来完成此操作。

+1

当然,当脚本工具放入2000年无法识别的东西时,您必须手动操作它们。 – HLGEM 2009-11-16 21:01:11

1

你不能从一个较新版本的备份移动到旧的,在这种情况下,你可以编写脚本的数据库,在2000年的箱执行它,那么你可以使用标准的数据传输传输任何数据你想

0

您可以生成一个脚本,它将重新创建所有对象并传输所有数据......只要该数据库中的所有内容在SQL 2000中都是有效的。那么不需要ROW_NUMBER(),不需要PARTITION,不需要CTE,不需要datetime2,层次结构或其他几种字段类型,EXECUTE AS和其他许多好处。基本上,有一个很好的机会,除非你的数据库非常基础,否则这是不可能的。

1

假设您在机器之间使用SSIS进行网络连接。更容易和更少的混乱。

1

您可以使用脚本生成您的数据库,然后在属性中选择形成:常规 - >脚本的服务器版本:SQL Server 2000中

脚本生成器会告诉你东西不是你的服务器版本兼容。

2

正如其他人已经表示,没有默认的方式来做到这一点。它只是不受支持。以下是有关如何正确执行此操作的更多详细信息,并避免任何迁移问题。

您需要为结构和数据生成脚本,然后在SQL 2000上执行这些脚本(与其他人已经说过的一样),但有几件事需要考虑。

产生SSMS脚本

  • 确保检查选项为SQL 2000脚本数据,以避免问题的努力创建SQL 2000类似地理类型列时。
  • 请务必查看脚本的执行,以避免基于相关性错误

这对于中小型数据库的一个很好的选择和需要SQL Server的一些知识(版本和这样的之间的依赖关系,差异)

第三方工具

  • 想法是使用第三方数据库比较工具,如ApexSQL DiffData Diff
  • 好的一面是,这些会照顾脚本执行和版本之间的差异
  • 不太好是事实,你将需要支付这些试用期结束之后
  • 我使用这两种工具但是你不能在市场上的任何其他工具上出错。 Here是此类别中其他工具的列表。
0

我们得到了类似的情况。一个非常低技术,但方便的解决方案是:

  1. 备份和截断表中的SQL 2000
  2. 创建SQL 2008中的链接服务器,指向SQL 2000
  3. 在sysobjects中运行一个选择查询生成一个查询脚本insert into LINKED SERVER.table select * from table
  4. 执行查询脚本。
相关问题