从 SQL Server 2000 迁移到 2012 不会中断

Posted

技术标签:

【中文标题】从 SQL Server 2000 迁移到 2012 不会中断【英文标题】:Migration from SQL Server 2000 to 2012 without Outage 【发布时间】:2014-09-22 00:32:31 【问题描述】:

我正在进行一个项目,该项目将一些旧版 SQL Server 2000 实例迁移到 SQL Server 2012。当您阅读 legacy 一词时,这些数据库被一些基于 VB 的桌面应用程序使用。它拥有大约 4000 多个用户,应用程序被评为 GOLD(意味着它必须 24x7 全天候运行)

再次总结

桌面 exe 安装的 VB 应用程序 -> SQL Server 2000

目标状态

桌面 exe 安装的 VB 应用程序 -> SQL Server 2012

应用程序使用包含它连接到的 SQL Server 详细信息的配置文件。因此,一旦数据移动到新的 SQL Server,就需要使用新的服务器详细信息更改此配置文件。

有人告诉我 SQL Server 2000 不能直接迁移。应该是先上SQL Server 2008,再上SQL Server 2012。如果理解不正确,请指正?

我的问题是在生产中执行此任务的计划。我不能一次性迁移所有用户,这意味着我将首先迁移 100 个用户,然后再迁移其他数百个用户,最后全部离开。这意味着一些用户可能会开始使用 SQL Server 2012,而其他用户仍在使用 SQL Server 2000。我不想一次性完成所有事情的原因是因为万一出现任何故障风险太大,而且因为应用程序必须 24x7 运行,所以这是不可能的关闭应用程序并更新每个用户桌面上的配置文件。

但是如果我允许 2000 和 2012 一起运行(比如 1 周,直到所有用户移动),这将使这些数据库不同步,我认为它们以后不能合并,因为两个数据库可能具有相同的主键分配给不同的数据。

我无法关闭应用程序并中断 4 小时以让所有用户一次性迁移到新数据库,因为应用程序必须 24x7 全天候运行。

任何人都可以推荐任何一种公司通常采用的方法来迁移 SQL Server 而不会像我上面所说的那样中断并保持数据一致性吗?

【问题讨论】:

由于需要进行中间更新,实际上没有任何办法可以解决中断问题,因为您已经正确地指出,不可能直接从 2000->2012 开始。跨度> 我可以在短时间内中断将 SQL 数据从 2000 年迁移到 2012 年(通过 2008 年)。但是,如果我不想一次性迁移所有用户,您认为我应该如何管理,因为我的生产团队想看看解决方案如何在几天内与一些用户一起工作,然后再迁移其余的用户。 这实际上更像是一个Server Fault 问题而不是Stack Overflow 问题。 【参考方案1】:

处理此问题的最简单方法是创建一个新的 2012 实例并从 2000 数据库的还原创建一个数据库。然后在两个数据库之间进行复制,以便将任一数据库中的更改发布到另一个数据库,这样您的主键就会保持同步。您将不得不在短时间内进行备份和恢复以移动所有数据,但假设 2 台服务器位于同一位置,那么这应该只是几分钟的事情。然后,一旦您的所有用户都已迁移,只需关闭 2000 服务器即可。

【讨论】:

您说的是基于数据库的复制还是文件存储复制?如果是数据库复制,你的意思是可以把复制策略放在SQL Server 2000和SQL Server 2012之间? 我说的是基于数据库的复制。是的,可以在不同版本之间制定复制策略。见:***.com/questions/7009212/… 感谢 Avitus。关于数据的迁移,你知道2008年是否绝对有必要吗? @RohitGoyal: - 您无法在 SQL Server 2012 实例上恢复 SQL Server 2000 备份。 2000 版只是太旧了不适合这个 ....

以上是关于从 SQL Server 2000 迁移到 2012 不会中断的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL Server 8 到 11 的 RAISERROR 转换

从 SQL Azure 迁移到 SQL Server

怎么从Oracle迁移到SQL Server ?

从 SQL Server Compact 4.0 迁移到 SQL Server Express 后提供程序错误

从 SQL Server CE 迁移到 SQL Server Express

Umbraco 从 SQL Server 2012 迁移到 SQL Server 2008 R2