隐藏 SQL Server 数据库引擎的实例

适用于:SQL Server

本主题说明如何使用 SQL Server 配置管理器在 数据库引擎 中隐藏 SQL Server 实例。 SQL Server 使用 SQL Server 浏览器服务来枚举安装在计算机上的 数据库引擎 实例。 这使客户端应用程序可以浏览服务器,并帮助客户端区别同一台计算机上的多个 数据库引擎 实例。 您可以使用以下过程防止 SQL Server Browser 服务向尝试通过使用 数据库引擎 “浏览” 按钮来查找实例的客户端计算机公开 实例。

使用 SQL Server 配置管理器

隐藏 SQL Server 数据库引擎实例

  1. 在“SQL Server 配置管理器”中,展开“SQL Server 网络配置”、右键单击“<服务器实例> 的协议”,然后选择“属性”。

  2. “标志” 选项卡的 “隐藏实例” 框中,选择 “是” ,然后单击 “确定” 关闭对话框。 对于新连接,更改会立即生效。

备注

如果你隐藏命名实例,你将需要在连接字符串中提供端口号才能连接到隐藏的实例,即使浏览器服务正在运行也是如此。 对于命名隐藏实例,我们建议你使用静态端口而不是动态端口。
有关详细信息,请参阅将服务器配置为侦听特定 TCP 端口(SQL Sever 配置管理器)

群集

如果隐藏群集实例或可用性组名称,则群集服务可能无法连接到 SQL Server。 这将导致群集实例的“IsAlive”检查失败,并且 SQL Server 将进入离线状态。

若要避免此情况发生,建议在群集实例的所有节点或承载可用性组副本的所有实例中创建别名,以反映你为该实例配置的静态端口。 例如,在具有两个副本的可用性组上,在节点 1 上为节点 2 实例创建一个别名,如 node-two\instancename。 在节点 2 上,创建一个名为 node-one\instancename 的别名。 成功故障转移需要别名。

有关详细信息,请参阅创建或删除供客户端使用的服务器别名(SQL Server 配置管理器)

如果隐藏群集命名实例,当 LastConnect 注册表项 (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\LastConnect) 具有的端口与SQL Server 正在侦听的端口不同时,群集服务可能无法连接到 SQL Server。 如果群集服务无法建立与 SQL Server的连接,则你可能会看到类似于以下内容的错误:
事件 ID:1001:事件名称:故障转移群集资源死锁。

另请参阅

服务器网络配置
SQL 虚拟服务器客户端连接的说明
如何将静态端口分配到 SQL Server 命名实例并避免常见缺陷