我的公司要求我制定一个服务器迁移计划,以重组他们的网络,使执行 IT 任务更加容易。他们目前有三台 MSSQL 服务器。目前的计划是将所有数据库迁移到一台 MSSQL 服务器,然后设置冗余。我仍在制定计划的这一部分。
他们开发了大量供内部使用的自定义应用程序,这些应用程序会从这些数据库中轮询大量数据。不幸的是,他们过去有很多程序员将 MSSQL 服务器名称硬编码到各种应用程序和存储过程中。我目前正在研究所有代码以纠正此问题。
我的问题如下。与其在所有不同的应用程序中输入新的 MSSQL 服务器名称,不如为每个数据库使用 DNS A/CNAME(即 database1.domain.com、database2.domain.com)。这样 IT 管理员就可以轻松更改数据库的物理位置并更新 CNAME,而无需程序员参与。在我看来,这将使管理变得更加容易,并允许公司在今年晚些时候实现预期的可扩展性。
我们目前使用 Windows 2003 Server Standard 和 MS SQL 2005 Standard。
您对这种方法有何看法?非常感谢您的帮助。
答案1
这是个好主意TM。您还可以使用 CNAMES 和 DNS 搜索后缀将所有旧的硬编码服务器名称重新定位到新的 MSSQL 服务器。
答案2
另一种方法是设置一个SQL Server 本机客户端别名在运行自定义应用程序的主机上。如果您的服务器场包含大量 Web 服务器或大量胖客户端(除非您将其自动化),这可能不切实际,但它有它的位置。
当连接字符串中未定义时,这也是让应用程序指向命名实例的 SQL 服务器的唯一方法。
答案3
我做了类似的事情。当我开始在目前的公司工作时,他们为每个数据库 DSN 使用一个 A 记录:例如 db1.domain.com。我创建了 CNAME 记录,这样我就可以通过 CNAME 将每个数据库 DSN 指向单个 A 记录(用于 SQL 服务器)。现在,如果我更换服务器,我只需更改一个 A 记录,就可以重新开始工作了。
因此,您需要使用 CNAME 记录而不是 A 记录。如果您使用 A 记录,则在更换服务器时必须删除并重新创建每个记录。
答案4
Tech Republic 上有一篇关于这个主题的精彩文章。
事实上,作者描述了我正在实施的一个策略,其中为每个数据库(而不仅仅是服务器)设置一个单独的 CNAME。
这样,您就可以灵活地将单个数据库从一个 SQL Server 移动到另一个 SQL Server,而无需触及任何客户端或代码!
https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/networking/?p=460