将 SQL Server 2008 数据库还原到 SQL Server 2000

5
我需要将一个完整的数据库从 SQL Server 2008 迁移到 SQL Server 2000。我使用 Management Studio 2008 创建了一个备份,将其复制到 2000 机器的硬盘上,然后在 Management Studio 2008 中选择将数据库还原到 2000 机器上。但是我收到一个错误消息,指出“设备上的介质系列格式不正确。SQL Server 无法还原此介质系列”。如果我使用 Enterprise Manager 2000,我会得到同样的错误。是否有一种方法可以将整个数据库从更新的 SQL Server 迁移到旧版本?
8个回答

10

我能想到的唯一方法就是重新创建整个架构,然后从现有数据库中复制数据。 因此,创建脚本以创建表、视图和存储过程,然后创建脚本以从现有数据库中复制数据。


1
我刚刚完成了这个任务。我找到的唯一方法是编写整个数据库的脚本(包括数据),然后在目标计算机上运行该脚本。这很麻烦,因为2008 DB可能会创建一个无法在2000上运行的脚本(我的就是这样),因此您需要在在2000上运行生成的脚本之前进行编辑。开始之前备好泰诺林吧。祝你好运。 - BoltBait
4
是的,这是唯一的方法。SQL Server从未向后兼容,例如,您无法将新版本还原到旧服务器上。我认为这不太可能会改变。 - marc_s

4

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

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

在SSMS中生成脚本

  • 确保勾选SQL 2000的脚本数据选项,以避免在尝试在SQL 2000上创建类似地理类型列时出现问题。
  • 确保查看脚本的执行顺序,以避免基于依赖关系的错误

这是小型到中型数据库的一个很好的选择,并需要一些SQL Server知识(依赖项,版本之间的差异等)

第三方工具

  • 思路是使用第三方数据库比较工具,如 ApexSQL DiffData Diff
  • 好处是这些工具会处理脚本执行和版本之间的差异
  • 不好的一点是试用期结束后需要付费
  • 我成功地使用过这两个工具,但市场上其他任何工具都不会错。这里 是此类其他工具的列表。

1

你无法将备份从新版本移动到旧版本,如果这样的话,你可以编写脚本来处理你的数据库,然后在2000版上执行它,然后你就可以使用标准数据传输来传输任何你想要的数据。


1

如果这些机器之间有网络连接,请使用SSIS。 这样更容易,而且不会出现太多问题。


1

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

脚本生成器将显示与您的服务器版本不兼容的内容。


0

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


1
当然,你必须手动操作它们,因为脚本工具会插入2000无法识别的内容。 - HLGEM

0

您可以生成一个脚本,重新创建所有对象并传输所有数据...只要数据库中的所有内容在SQL 2000中有效。因此没有ROW_NUMBER()、PARTITION、CTEs、datetime2、层次结构或其他几种字段类型,没有EXECUTE AS和许多其他好处。基本上,除非您的数据库非常基本,否则很有可能不可能。


0

我们遇到了类似的情况。一种非常简单但很有用的解决方案是:

  1. 在 SQL 2000 中备份并截断表。
  2. 在 SQL 2008 中创建一个 LINKED SERVER,并指向 SQL 2000。
  3. 运行 sysobjects 的 select 查询来生成 insert into LINKED SERVER.table select * from table 的查询脚本。
  4. 执行查询脚本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接