TL;博士
我想将SQL Server 2014 Analysis Services添加到 SQL Server的特定实例,并以这样的方式对其进行配置,即 Analysis Services (SSAS) 和未来的 Reporting Services (SSRS) 将只接收特定于实例的请求IP,以便让SQL Server Browser Service保持在停止状态。
先决条件
对于运行多个 SQL Server 2014 实例的单个 Windows Server,我有以下先决条件:
基本信息
- 2 个网卡 - 12 个 IP 地址 - 10 个 SQL Server 服务器服务实例(运行中) - 10 个 SQL Server 代理服务器服务实例(运行中) - 1 x SQL Server Browser 服务(未运行)
网卡配置
Windows Server NIC 配置如下:
- 1 x NIC(备份网络) - 10.2.0.1 - 1 个网卡(局域网) - 10.2.0.2(Windows 服务器) - 10.2.1.1 (SQL Server "Instance01"/CNAME: servername-ins01) - 10.2.1.2 (SQL Server "Instance02"/CNAME: servername-ins02) - 10.2.1.3 (SQL Server "Instance03"/CNAME: servername-ins03) - 10.2.1.4 (SQL Server "Instance04"/CNAME: servername-ins04) - 10.2.1.5 (SQL Server "Instance05"/CNAME: servername-ins05) - 10.2.1.6 (SQL Server "Instance06"/CNAME: servername-ins06) - 10.2.1.7 (SQL Server "Instance07"/CNAME: servername-ins07) - 10.2.1.8 (SQL Server "Instance08"/CNAME: servername-ins08) - 10.2.1.9 (SQL Server "Instance09"/CNAME: servername-ins09) - 10.2.1.10 (SQL Server "Instance10"/CNAME: servername-ins10)
SQL Server 配置管理器
SQL Server 配置管理器为 SQL Server 的每个“Instance nm ”配置如下:
- 'Instance01' 的协议 - 共享内存:启用 - 命名管道:禁用 - TCP/IP:启用
TCP/IP 属性 'Instance01' - 协议选项卡
- 协议 - 启用:是 - 保持活力:30000 - 全部听:没有
使用上述设置,必须单独配置每个“实例nm ”,以响应配置端口上的 IP 特定调用。(注意:作为一个额外的好处,每个实例将能够监听默认的 SQL Server 端口 1433,这反过来将大大简化防火墙配置,因为您将能够使用端口规则sql-server
。只是说。)
TCP/IP 属性 'Instance01' - IP 地址选项卡
对于具体实例IP地址对应的IP n条目,设置如下:
- IPn - 主动:是 - 启用:是 - IP地址:10.2.1.1 - TCP 动态端口: - TCP 端口:1433 - IP全部 - TCP 动态端口: - TCP 端口:
与实例的特定 IP 地址无关的任何其他IP n条目将配置如下:
- IPn - 主动:是 - 启用:否 - IP 地址:10.2.1.xx - TCP 动态端口: - TCP 端口:
快速总结
通过上述设置和配置,每个 SQL Server 实例将在标准 SQL Server 端口 1433 上/使用专用 IP 地址运行。每个实例都有自己的 CNAME,允许用户连接到 SQL Server:
- 服务器名-ins01
- 服务器名-ins02
- 服务器名-ins03
- 服务器名-ins04
- 服务器名-ins05
- 服务器名-ins06
- ...
...无需指定端口或实例名称。另一个优点是不必运行SQL Server Browser 服务来分发对 SQL Server 实例的调用,因为每个调用都直接路由到实例特定的 SQL Server(服务)。
将分析服务添加到实例
软件供应商现在希望增加用户体验并提供针对现有数据运行一些分析查询的能力。软件供应商要求我们安装 SQL Server Analysis Services。这是一个特定于实例的功能,在安装过程中,您必须选择要添加该功能的实例。
防火墙配置
要允许连接到 Analysis Services,您必须在防火墙中配置以下规则:
10.2.0.2:2382 (Browser Service)
如果我使用默认实例 (MSSQLSERVER),那么我可以在防火墙中配置以下规则:
10.2.1.1:2383 (Default Instance)
这是根据以下文档:
SQL Server 2005 Analysis Services (SSAS) 服务器属性(SQL Server 2005,但显然对当前版本仍然有效)
连接到特定于实例的分析服务
安装完成后,您可以使用以下语法连接到特定于实例的 Analysis Services:
servername\Instance01
SQL Server 浏览器服务
配置 SQL Server 实例特定的分析服务后,我注意到 SQL Server Browser 服务现在处于运行状态。
糟糕,这意味着对 Analysis Services 的请求正在通过 Window Server 的 IP 地址 (10.2.0.2) 路由到 SQL Server 特定的 Analysis Service 实例。
如果我停止 SQL Server Browser 服务,则无法再通过servername\Instance01连接到 SQL Server Analysis Services 。
安全注意事项
根据上述文件:
SQL Server Browser 服务在 SQL Server 2005 数据库引擎和 Analysis Services 引擎之间共享。对于数据库引擎,出于安全考虑,建议关闭 SQL Server Browser 服务。这可能会造成两难境地,因为您可能需要将它用于Analysis Services引擎。推荐的做法是在需要时打开服务,否则将其关闭。
哇。
发现
安装 SQL Server Analysis Services 已启动 SQL Server Browser 服务,从而产生安全考虑。
问题
我可以
Instance01
用 CNAME配置 SQL Server Analysis Servicesservername-ins01
来绑定 IP 地址10.2.1.1
吗?我能否以这种方式配置我的命名实例的 SQL Server Analysis Services,以便我可以再次停止SQL Server Browser服务?
Analysis Services 始终侦听所有 IP,除非它是群集实例或在 VM 中运行。所以你不能在这个配置中禁用浏览器服务。
如果您可以使用 IIS 和 HTTP 访问,则可以配置多个运行 Analysis Services 数据泵实例的 IIS 网站。
介绍
在阅读了各种在线文章并在多实例 SQL Server 上配置多个分析服务后,我可以为处于相同情况的人们提供以下可能的解决方案。它们都涉及或多或少的配置和/或防火墙设置。它们尽可能接近特定于实例的IP : PORT和/或CNAME : PORT配置。
参考资料
在尝试将 Analysis Services 配置为在特定IP上运行时,我仔细阅读了一系列文章:端口配置:
从客户端应用程序连接 (Analysis Services) (Microsoft | Docs | SQL Server 2014)
如何确定和更改 SSAS 实例的端口(Microsoft 支持)
配置 Windows 防火墙以允许 Analysis Services 访问(Microsoft | Docs | SQL Server 2014)
SQL Server 浏览器服务(数据库引擎和 SSAS)(Microsoft | Docs | SQL Server 2014)
SQL Server 2005 分析服务 (SSAS) 服务器属性(Microsoft Technet)
TCP 和 UDP 端口号列表(维基百科)
对于 SQL Server AS 2005 到 2017 仍然有效
没有运行 SQL Server Browser 的解决方案
如果您确实有安全意识并且不希望人们“浏览”您的 SQL Server 以获取可用实例,那么您不希望SQL Server Browser 服务处于运行状态。此配置的起点是SQL Server Browser Service (Database Engine and SSAS)中的以下语句:
但是你会失去以下能力:
(强调我的;只是想要我想要的)
安装 SQL Server 分析服务后,您必须对 SSAS 配置/设置进行以下更改。
将 SSAS 实例配置为侦听特定端口
修改特定实例的(例如
Instance01
)SSAS 配置以侦听特定端口。每个实例(例如Instance01
,Instance02
, ...)都需要自己的专用端口。您不能将所有实例配置为使用相同的端口(例如2383
)... 使用 SSMS
servername\instance01
)2383
用于默认(MSSQLSERVER)实例和0
命名实例,这意味着端口是动态设置的。2382
,因为这会弄乱 SQL Server Browser 服务,该服务仍在端口2382
上侦听与当前正在运行的其他九个 SSAS 实例的任何传入连接。您可能需要考虑使用 49152–65535 区域内的端口号,该端口号可供私人使用(TCP 和 UDP 端口号列表/维基百科)。... 带记事本
msmdsrv.ini
通常可以在目录C:\Program Files\Microsoft SQL Server\MSAS12.INSTANCE01\OLAP\Config
目录中找到的文件。<Port>0</Port>
设置。2382
,因为这会弄乱 SQL Server Browser 服务,该服务仍在端口2382
上侦听与当前正在运行的其他九个 SSAS 实例的任何传入连接。您可能需要考虑使用 49152–65535 区域内的端口号,该端口号可供私人使用(TCP 和 UDP 端口号列表/维基百科)。配置客户端以连接到特定实例
为了使客户端能够连接到分析服务,您必须提供具有如下端口的完全限定 SQL Server 分析服务器名称 (FQSSASN):
这是
servername\instance01
SQL Server的CNAME,但是因为最后会关闭SQL Server Browser服务,所以不能servername\instance01:52383
用来连接服务器。这实际上并不重要,因为 SSAS 实例将在任何 IP 上获取。防火墙设置
因为 SSAS 实例在专用端口上运行,您可以配置防火墙以允许连接到命名实例的 IP:端口(例如
10.2.1.1:52383
,根据问题)。重要 事项 对于在专用服务器上运行的每个 SSAS 实例,必须重复上述过程,并在此过程中增加端口号。在将所有 Analysis Services 实例重新配置为侦听专用端口后,即可关闭 SQL Server Browser 服务。
验证 Analysis Services 端口
这可以通过运行
netstat -abno
并查找各个[msmdsrv.exe]
条目来验证:行尾的数字是服务的进程号。您可以在 Windows 任务管理器 (PID) 中查找此信息,以验证特定实例的分析服务是否在指定端口上运行。
SQL Server 浏览器服务
一旦您将所有 SSAS 实例配置为侦听各个端口并且现有 SQL Server 都在专用 IP 和端口上运行(如问题所示),您就可以停止 SQL Server Browser 服务。
每个单独的分析服务都可以通过以下
CNAME:PORT
语法访问: