SQL 默认实例名称

SQL 默认实例名称

默认实例名称可以是除 (local) 或 (machinename) 之外的其他名称吗?例如,如果我的服务器名为 Apple,我安装了 SQL Server 2008 并选择创建一个默认实例并将其命名为 Orange,这样可以吗?然后我是否可以使用来自另一台服务器的连接字符串“Database=Orange”?

最终目标:我在 Apple 服务器上有很多数据库,并且希望将它们全部移动到新 Orange 服务器 - 有没有办法做到这一点而不破坏当前引用 Apple 的所有连接字符串?

我猜所有这些问题的答案都是否定的,而且这是有道理的,但我希望我错了。

答案1

我不知道该怎么做。默认实例始终是运行 SQL Server 的计算机的名称。

但是,您可以在客户端计算机上为服务器创建别名。您可以在客户端上创建注册表项,如下所示:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]
"APPLE"="DBMSSOCN,ORANGE"

这会将所有对 Apple 的呼叫指向 Orange 服务器。

答案2

使用 DNS 或客户端别名完全可以实现这一点。实际上,我们更愿意为每个实例提供一个专用的 DNS 别名(例如,APP1.COMPANY.COM 是指向 SERVER1.COMPANY.COM 的 CNAME 记录),这样当我想移动安装在该服务器上的默认实例 SERVER1.COMPANY.COM 时,我只需在新服务器上安装、备份和恢复数据库,然后将 CNAME 记录从 SERVER1.COMPANY.COM 指向 SERVER2.COMPANY.COM,客户端永远不会知道其中的区别。在命名实例的情况下,它将以相同的方式工作,客户端将使用 APP1.COMPANY.COM\INST1 指向 SERVER1.COMPANY.COM\INST1,情况也是如此。

为了确保登录名已被移动,您需要使用 sp_help_revlogin(搜索它)来导出/导入实例用户,或恢复主数据库。

相关内容