SQL Server 浏览器服务 (数据库引擎和 SSAS)

适用于:SQL Server - 仅限 Windows

SQL Server Browser (sqlbrowser) 作为服务运行,以帮助客户端计算机在运行 Windows 的服务器上查找 SQL Server 实例。 SQL Server Browser 与 SQL Server 一起安装。 不需要配置 SQL Server Browser 服务,但必须在某些连接方案中运行。

SQL Server 浏览器可帮助:

  • 浏览可用服务器列表。 对于数据库引擎和 SQL Server Analysis Services (SSAS)的每个实例,SQL Server Browser 服务提供实例名称和版本号。

  • 连接到正确的服务器实例。

  • 连接到专用管理员连接 (DAC) 终结点。

配置 SQL Server Browser 服务

SQL Server Browser 可以在安装过程中进行配置,也可以使用 SQL Server 配置管理器进行配置。 默认情况下, SQL Server Browser 服务会自动启动:

  • 升级安装时。
  • 在群集上安装时。
  • 安装包括所有 SQL Server Express 实例的数据库引擎的命名实例时。
  • 安装 SSAS 的命名实例时。

SQL Server Browser 工作原理

以下部分介绍了 SQL Server Browser 服务的工作原理。

TCP/IP 端口或命名管道分配

当 SQL Server 实例启动时,为 SQL Server 启用 TCP/IP 协议时,将为该实例分配 TCP/IP 端口。 如果启用了命名管道协议,SQL Server 将侦听特定的命名管道。 该特定实例使用此端口或命名管道与客户端应用程序交换数据。 TCP/IP 端口 1433 和管道 \sql\query 在安装过程中分配给默认实例。 服务器管理员可使用 SQL Server 配置管理器更改端口或命名管道。

命名实例和动态端口

由于只有一个 SQL Server 实例可以使用端口或管道,因此为命名实例分配不同的端口号和管道名称,包括 SQL Server Express 版本。 默认情况下,命名实例和 SQL Server Express 在启用时便配置为使用动态端口。 也就是说,当 SQL Server 启动时就分配了可用端口。

如果需要,可以为 SQL Server实例分配特定端口。 在连接到 SQL Server 时,客户端可以指定特定端口。 但是,如果动态分配了端口,则只要重新启动 SQL Server 实例,端口号就可以更改,因此正确的端口号对客户端未知。

SQL Server 启动过程和端口发现

启动时,SQL Server 浏览器将启动并声明用户数据报协议 (UDP) 端口 1434。 SQL Server Browser 将读取注册表,识别计算机上的所有 SQL Server 实例,并注明它们使用的端口和命名管道。 当一台服务器具有两个或多个网卡时, SQL Server 浏览器会为 SQL Server返回其遇到的第一个已启用的端口。 SQL Server 浏览器支持 IPv4 和 IPv6。

当 SQL Server 客户端请求 SQL Server 资源时,客户端网络库使用端口 1434向服务器发送 UDP 消息。 SQL Server 浏览器将用请求的实例的 TCP/IP 端口或命名管道做出响应。 然后,客户端应用程序中的网络库将使用所需实例的端口或命名管道向服务器发送请求来完成连接。

有关启动和停止 SQL Server 浏览器服务的详细信息,请参阅 “启动”、“停止”、“暂停”、“恢复”和重启 SQL Server 服务

使用 SQL Server Browser

当 SQL Server Browser 服务不运行时,如果提供了正确的端口号或命名管道,仍可以连接到 SQL Server。 例如,如果 SQL Server 在端口 1433上运行,则可以使用 TCP/IP 连接到默认实例。

但是,如果 SQL Server Browser 服务未运行,则以下连接无效:

  • 在未完全指定所有参数(例如 TCP/IP 端口或命名管道)的情况下,组件尝试连接到命名实例。

  • 任何能生成或传递 <server>\<instance> 信息的组件,此信息可供其他组件稍后用于重新连接。

  • 未提供端口号或管道就连接到命名实例。

  • 数据库管理员与命名实例或默认实例的诊断连接(如果未使用 TCP/IP 端口1433)。

  • 联机分析处理 (OLAP) 重定向程序服务。

  • 枚举 SQL Server Management Studio 中的服务器。

假设在客户端-服务器方案中使用 SQL Server(例如,当应用程序通过网络访问 SQL Server 时)。 如果停止或禁用 SQL Server Browser 服务,则必须为每个实例分配特定的端口号,并将客户端应用程序代码配置为使用该端口号。 此方法存在如下问题:

  • 必须更新和维护客户端应用程序代码才能确保它连接到正确的端口。

  • 为每个实例选择的端口可由服务器上的另一个服务或应用程序使用,从而导致 SQL Server 实例不可用。

群集和 SQL Server Browser

SQL Server Browser 不是群集资源,不支持从一个群集节点到其他群集节点的故障转移。 因此,如果存在群集,则应为每个群集节点安装并打开 SQL Server Browser。 在群集上,SQL Server Browser 侦听 IP_ANY

注意

当 SQL Server 浏览器侦听 IP_ANY 并启用侦听特定 IP 地址时,必须在每个 IP 地址上配置相同的 TCP/IP 端口,因为 SQL Server Browser 将返回它遇到的第一个 IP 地址和端口对。

通过命令行进行安装、卸载和运行

默认情况下,SQL Server Browser 程序安装在 .<drive>:\Program Files (x86)\Microsoft SQL Server\<nn>\Shared\sqlbrowser.exe

SQL Server 浏览器服务在删除 SQL Server 的最后一个实例后被卸载。

可以使用 -c 开关,通过命令提示符启动 SQL Server Browser 来排除故障:

<drive>\<path>\sqlbrowser.exe -c

安全性

SQL Server Browser 服务对于促进与 SQL Server 实例的网络通信至关重要。

SQL Server Browser 服务的安全措施包括:

  • 配置防火墙以允许这种流量。

  • 限制对受信任 IP 地址的访问。

  • 定期应用更新以修补漏洞。

  • 此外,必须实施强身份验证和授权策略,以防止未经授权的访问和维护 SQL Server 环境的完整性。

帐户权限

SQL Server Browser 使用 SQL Server 解析协议 (SSRP) 侦听 UDP 端口,并接受未经身份验证的请求。 SQL Server Browser 应该在低特权用户的安全上下文中运行,以将受到恶意攻击的几率降到最低。 可以通过使用 SQL Server 配置管理器更改登录帐户。

SQL Server Browser 的最小用户权限包括:

  • 拒绝通过网络访问该计算机。
  • 拒绝本地登录。
  • 拒绝以批处理作业身份登录。
  • 拒绝通过“终端服务”登录。
  • 作为服务登录。
  • 读取和写入与网络通信(端口和管道)相关的 SQL Server 注册表项。

默认帐户

安装程序将 SQL Server Browser 配置为使用安装期间为服务选定的帐户。 其他可能的帐户包括:

  • 所有“域\本地”帐户。
  • 本地服务帐户。
  • 本地系统帐户(不建议这样做),因为它具有不必要的特权。

隐藏 SQL Server

隐藏的实例是仅支持共享内存连接的 SQL Server 实例。 对于 SQL Server,设置 HideInstance 标记来指示 SQL Server Browser 不应对此服务器实例的相关信息做出响应。

使用防火墙

若要在防火墙后面的服务器上与 SQL Server 浏览器服务通信,请打开 UDP 端口和 SQL Server 使用的 TCP/IP 端口1434(例如)。 1433 有关使用防火墙的信息,请参阅 配置 Windows 防火墙以允许 SQL Server 访问