SQL ServerBrowser 程序作为 Windows 服务运行。 SQL Server 浏览器侦听对 Microsoft SQL Server 资源的传入请求,并提供计算机上安装的 SQL Server 实例的相关信息。 SQL Server Browser 可用于执行下列操作:
浏览可用服务器列表
连接到正确的服务器实例
连接到专用管理员连接 (DAC) 端点
对于数据库引擎和 SSAS 的每个实例,SQL Server Browser 服务(sqlbrowser)提供实例名称和版本号。 SQL Server Browser 与 SQL Server 一起安装。
可以在安装期间或使用 SQL Server 配置管理器配置 SQL Server 浏览器。 默认情况下, SQL Server Browser 服务会自动启动:
升级安装时。
在群集上安装时。
安装包括所有 SQL Server Express 实例的数据库引擎的命名实例时。
安装 Analysis Services 的命名实例时。
背景
在 SQL Server 2000 之前,计算机上只能安装一个 SQL Server 实例。 SQL Server 侦听 1433 端口上的传入请求,该端口由官方的 Internet 号码分配机构 (IANA) 分配给 SQL Server 。 只有一个 SQL Server 实例可以使用端口,因此,当 SQL Server 2000 引入对多个 SQL Server 实例的支持时,SQL Server 解析协议 (SSRP) 已开发为侦听 UDP 端口 1434。 此侦听器服务使用已安装实例的名称以及实例使用的端口或命名管道响应客户端请求。 为了解决 SSRP 系统的限制,SQL Server 2005 引入了 SQL Server Browser 服务作为 SSRP 的替代项。
SQL Server 浏览器的工作原理
当 SQL Server 实例启动时,如果为 SQL Server 启用了 TCP/IP 协议,则会为服务器分配 TCP/IP 端口。 如果启用了命名管道协议,SQL Server 将侦听特定的命名管道。 此端口或“管道”由该特定实例用来与客户端应用程序交换数据。 在安装期间,TCP 端口 1433 和管道 \sql\query
将分配给默认实例,但稍后可以使用 SQL Server Configuration Manager 由服务器管理员更改这些端口。 由于只有一个 SQL Server 实例可以使用端口或管道,因此,会将不同的端口号和管道名称分配给命名实例,包括 SQL Server Express。 默认情况下,启用时,命名实例和 SQL Server Express 均配置为使用动态端口,即在 SQL Server 启动时分配可用端口。 如果需要,可以为 SQL Server实例分配特定端口。 连接时,客户端可以指定特定端口;但是,如果端口是动态分配的,则只要重新启动 SQL Server,端口号就可以更改,因此正确的端口号对客户端未知。
启动时,SQL Server 浏览器启动并声明 UDP 端口 1434。 SQL Server Browser 读取注册表,标识计算机上的 SQL Server 的所有实例,并记下它们使用的端口和命名管道。 当一台服务器具有两个或多个网卡时, SQL Server 浏览器会为 SQL Server返回其遇到的第一个已启用的端口。 SQL Server 浏览器支持 ipv6 和 ipv4。
当 SQL Server 客户端请求 SQL Server 资源时,客户端网络库将使用 1434 端口向服务器发送一条 UDP 消息。 SQL Server 浏览器将用请求的实例的 TCP/IP 端口或命名管道做出响应。 然后,客户端应用程序中的网络库将使用所需实例的端口或命名管道向服务器发送请求来完成连接。
有关启动和停止 SQL Server 浏览器服务的信息,请参阅 SQL Server 联机丛书。
使用 SQL Server 浏览器
如果 SQL Server Browser 服务未运行,如果提供正确的端口号或命名管道,则仍能够连接到 SQL Server。 例如,如果 SQL Server 在端口 1433 上运行,则可以使用 TCP/IP 连接到默认实例。
但是,如果 SQL Server Browser 服务未运行,则以下连接不起作用:
任何试图在未完全指定所有参数(例如 TCP/IP 端口或命名管道)的情况下连接到命名实例的组件。
生成或传递服务器\实例信息的任何组件,以后其他组件可以使用这些信息重新连接。
未提供端口号或管道就连接到命名实例。
如果不使用 TCP/IP 端口 1433,则 DAC 将连接到命名实例或默认实例。
OLAP 重定向器服务。
枚举 SQL Server Management Studio、Enterprise Manager 或 Query Analyzer 中的服务器。
如果在客户端服务器方案中使用 SQL Server(例如,当应用程序通过网络访问 SQL Server 时),如果停止或禁用 SQL Server Browser 服务,则必须为每个实例分配特定的端口号,并编写客户端应用程序代码以始终使用该端口号。 此方法存在如下问题:
必须更新和维护客户端应用程序代码,以确保它连接到正确的端口。
为每个实例选择的端口可由服务器上的另一个服务或应用程序使用,从而导致 SQL Server 实例不可用。
集群
SQL Server Browser 不是群集资源,不支持从一个群集节点到另一个群集节点的故障转移。 因此,对于群集,应为群集的每个节点安装并打开 SQL Server Browser。 在群集上,SQL Server Browser 侦听IP_ANY。
注释
在侦听IP_ANY时,启用侦听特定 IP 时,用户必须在每个 IP 上配置相同的 TCP 端口,因为 SQL Server Browser 将返回它遇到的第一个 IP/端口对。
从命令行安装、卸载和运行
默认情况下,SQL Server Browser 程序安装在 C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe。
SQL Server 浏览器服务在删除 SQL Server 的最后一个实例后被卸载。
可以使用 -c 开关从命令提示符处启动 SQL Server Browser 进行故障排除:
<drive>\<path>\sqlbrowser.exe -c
安全
帐户特权
SQL Server 浏览器侦听 UDP 端口,并使用 SQL Server 解析协议(SSRP)接受未经身份验证的请求。 SQL Server 浏览器应在低特权用户的安全上下文中运行,以最大程度地减少受到恶意攻击的风险。 可以使用 SQL Server 配置管理器更改登录帐户。 SQL Server Browser 的最低用户权限如下:
拒绝通过网络访问该计算机
拒绝在本地登录
拒绝以批处理作业身份登录
拒绝通过终端服务登录
作为服务登录
读取和写入与网络通信相关的 SQL Server 注册表项(端口和管道)
默认帐户
安装程序将 SQL Server Browser 配置为使用安装期间为服务选定的帐户。 其他可能的帐户包括:
任何 域\本地 帐户
本地服务帐户
本地系统帐户(不建议使用不必要的特权)
隐藏 SQL Server
隐藏的实例是仅支持共享内存连接的 SQL Server 实例。 对于 SQL Server,请设置 HideInstance
标志以指示 SQL Server Browser 不应响应有关此服务器实例的信息。
使用防火墙
若要与防火墙后面的服务器上的 SQL Server Browser 服务通信,除了 SQL Server 使用的 TCP 端口(例如 1433)外,还打开 UDP 端口 1434。 有关使用防火墙的信息,请参阅 SQL Server 联机丛书中的“如何:为 SQL Server 访问配置防火墙”。