在没有 2005 或 2008 实例的情况下从 SQL Server 2000 迁移到 2012

Lun*_*tik 11 sql-server migration sql-server-2000 restore sql-server-2012

我在 SQL Server 2000 上遇到了三个旧数据库,我需要将其迁移到 2012 年。我相信标准方法是恢复到 2005 年或 2008 年的实例,更新、重新导出并最终恢复到 2012 年。

很好,除了我们没有 2005 或 2008 实例可用。

是否有任何可能值得尝试的变通方法或其他方法?

作为参考,数据库只包含 15-20 个表和几个视图,它们看起来非常简单,备份大小只有 100-200MB。

Aar*_*and 21

不,没有直接从 2000 年升级到 2012 年的数据库的解决方法。

由于您没有大量数据,您可以做各种事情来移动数据(但不能移动整个数据库),包括:

  • 导入/导出向导
  • 安全信息系统
  • BCP
  • 使用 2012 年的链接服务器或应用程序进行手动查询

然而,这些不一定会带来其他东西,如用户、权限、角色等。并不是所有的东西都会以正确的依赖顺序创建你的对象。因此,它们的工作量更大且容易出错。根据我的经验,暂时建立一个中间实例,然后进行两次备份+恢复操作是值得的——这比上述任何一种方法都更容易、更快、更不容易出错。

如果您的数据库小于 10GB,您可以在几分钟内安装一个 Express(免费)副本,然后使用它。您可以在此处下载 2008 R2 Express 。我认为 2000 年围绕数据库结构等没有任何企业功能会阻止升级(更现代版本的更大问题)。

如果您的数据库对于 Express 来说太大,您应该能够以 49 美元左右的价格找到 Developer Edition(甚至更便宜 -我在 eBay 上找到 2005 的价格为 37 美元),或者如果您订阅了 MSDN,您应该能够获得任何来自那里的 SKU。

或者你可以使用评估版,令人惊讶的是,它仍然提供旧版本的下载(例如,我在这里找到了 2008),但是我正在使用手机,因此无法确认该版本的下载仍然有效.


小智 6

说没有解决方法似乎有点为时过早。

你说你的数据库只包含几个表和视图。为什么不将表和视图模式导出为 SQL 创建语句并在目标数据库上运行它们?然后,您还可以将实际数据导出为 CSV 格式并将它们导入目标数据库,或者甚至可以在 C#/C++/etc 中编写一些内容来导出/导入实际数据。

您无需在最终不需要的 SQL Server 新实例上花费一分钱。

  • 足够公平,更新了我的答案。仍然认为变通方法比仅仅临时放置一个实例并执行两个可靠且不易出错的备份+恢复操作要多得多。(此外,这似乎与*钱*无关,因为 OP 已经有 2005 年的二进制文件,而且无论如何都应该能够使用 SQL Express 迁移这么小的数据库。) (4认同)
  • 并包括所有其他对象、存储过程、触发器、函数等。同样,还有 BCP 实用程序用于从数据库复制数据和将数据复制到数据库。 (3认同)