我们有一台旧的 SQL 2000 服务器,我们称其为“oldSQL2K”,还有一台新的 SQL 2008 服务器,我们称其为“newSQL2K8”。两者都在生产中。oldSQL2K 上有大约 90 个用户数据库,人类可以通过 ODBC 连接访问,应用程序也可以通过 SQL 登录访问。
我正在寻找有关如何最好地将数据库从 oldSQL2K 迁移到 newSQL2K8 的建议。
我已经手动迁移了大约十几个数据库,方法是对旧数据库进行 SQL 备份,对新数据库进行 SQL 还原。我已经将所有 SQL 日志从旧数据库迁移到新数据库,所以一切就完成了。
作为一项实验,我尝试了简单的 DNS 名称更改,但当然失败了。
挑战如下:我们支持的“必须继续存在”的遗留应用程序之一将旧 SQL2000 服务器名称嵌入到编译代码中,而源代码已经消失!说来话长,这不是我的错,但现在是我的问题。该应用程序在大约 50 个工作站上运行。
我们的服务中心已确定约有一千个工作站将受到此次迁移的影响。哎哟。
我们确实在上述 50 个工作站上安装了 SQL Client Network 实用程序,并且在那里更新别名确实有效。不过,如果可能的话,我还是想避免在其他工作站和服务器上安装它。
那么各位,如果是您的话,您会如何进行这次迁移呢?
答案1
我会像你一样进行迁移,但要隔离那些无法轻易更改的“必须保持活动”应用程序,并将它们留在旧服务器上。然后,如果你有 VM 环境,则虚拟化 SQL2000 服务器。除非你遇到性能问题并需要更多处理空间,否则旧应用程序可能不会从迁移到 SQL2008 中受益,而 VM 将不断提醒你真正应该替换的坏应用程序。
答案2
将剩余部分虚拟化是一个非常好的想法……或者,您可以将它们移动到 SQL Server 2008(在测试它们仍然有效之后),并使用 DNS magic 重新指向。我见过很多次这样做 - 虽然不太干净,但确实有效。
答案3
我以前也遇到过类似的进退维谷的情况,采取的方法是转移到另一台 SQL 2000 服务器,该服务器可以轻松更改,但无法升级到 2008,一旦您只剩下几个应用程序(如您提到的应用程序),服务器名称就无法更改,我们从域中删除旧服务器并将其关闭,并在指向新 SQL 服务器的 DNS 别名中存根。使用隔离网络可以帮助您解决生产设置中遇到的所有问题,而不会干扰任何事情。
如果您有一个隔离网络(或者可以创建一个),您可以在其中复制服务器名称并至少有一个客户端进行测试,我会使用它进行评估。这将允许您测试 DNS 别名。复制每个给定数据库的备份并将其还原到 SQL 2008 x64 或您的生产服务器的任何版本/体系结构,并使用每个数据库的不同兼容性级别进行测试。
我希望这能给你带来一些想法!