![将 SQL 7 升级到 SQL 2008 的最佳方法是什么?](https://linux22.com/image/502948/%E5%B0%86%20SQL%207%20%E5%8D%87%E7%BA%A7%E5%88%B0%20SQL%202008%20%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我正在升级一个旧网站并将所有内容迁移到新服务器和最新软件版本。
作为此次升级的一部分,我需要将数据库从运行 MS-SQL 7 的 Win2000 服务器移动到运行 MS-SQL 2008 的新 Win2008 64 位服务器。
我在之前的测试运行中尝试过备份和恢复数据库,SQL 2008 无法恢复版本 7 的数据库备份。
我在想我可以尝试使用 BCP 导出数据并将其导入到 2008 机器上具有相同模式的空数据库中。
否则,我可以尝试在新机器上安装 SQL 2000 或 SQL 2005 并恢复到该状态 - 然后:
- 分离该数据库并将其附加到 sql 2008 引擎中
或者
- 从该数据库备份并于 2008 年恢复
这是一个生产系统,因此传输数据将导致系统停机一段时间,但我想将这种情况降至最低。
进行此升级的最佳方法是什么?有什么陷阱需要注意吗?我应该使用 BCP 方式还是中间数据库版本?
答案1
如果要升级,请先升级到 SQL 2000 或 SQL 2005,然后再升级到 SQL 2008。有很多关于如何执行此操作的文档。开始之前请先阅读。认真的。
您的结构和数据转移方法也是一种选择,但可能会遇到问题。我会采用升级方法。不过就我个人而言,我会通过 SQL 2005 进行升级,然后再升级到 2008。
答案2
您无法直接从 SQL Server 7 升级到 SQL Server 2008。本文档列出了可能支持的选项。[http://msdn.microsoft.com/en-us/library/ms143393.aspx
最好的办法是从 SQL Server 7 升级到 SQL Server 2000,再从 SQL Server 2000 升级到 SQL Server 2008。不要进行过多不必要的升级。这是获取权威信息的最佳选择。 http://www.microsoft.com/downloads/details.aspx?FamilyID=66d3e6f5-6902-4fdd-af75-9975aea5bea7&displaylang=en
升级后
- 准备好面对一些性能问题,因为查询优化器是从头开始编写的,您将得到完全不同的计划,并留意一些代码重写。不要指望使用 SQL Server 2008 会(至少)在开始时解决这些问题。
- 确保重建所有索引或使用全扫描更新统计数据
- 运行 DBCC UPDATEUSAGE,这将帮助系统视图 (DMV) 更正行数。
- ALTER DATABASE SET PAGE_VERIFY CHECKSUM,这将帮助您尽早检测 IO 损坏。理想情况下,您希望在运行重建索引之前设置此选项。
您可能会遇到更多问题,因此规划和做好功课是成功升级的关键。
答案3
我个人会选择在中间服务器上恢复的方法。复制结构和数据也应该可行,但实际上可能比两次分离+复制+附加操作花费的时间更长。
如果您确实采用 BCP 复制结构和数据方法,请确保正确设置目标数据库的兼容级别,以减少由于 SQL 本身的变化而导致的问题。请参阅http://msdn.microsoft.com/en-us/library/ms178653(SQL.90).aspx了解有关这些差异的更多详细信息。
即使相应地设置了兼容级别,您也应该计划对使用该数据库的任何应用程序进行完整的回归测试,因为仍然存在细微的差别,其中您的代码依赖于 SQL7 中恒定但在以后的版本中不保证如此的“未定义”行为。