将 SQL Server Analysis Services (SSAS) 配置为在与 SQL Server 实例相同的 IP 上运行

Joh*_* N. 9 sql-server ssas configuration sql-server-2014 sql-server-2016

TL; 博士

我想将SQL Server 2014 Analysis Services添加到SQL Server的特定实例并以这样的方式对其进行配置,即 Analysis Services (SSAS) 和未来的 Reporting Services (SSRS) 将仅接收对特定实例的请求IP,为了让SQL Server Browser 服务保持在停止状态。


先决条件

对于运行多个 SQL Server 2014 实例的单个 Windows Server,我有以下先决条件:

基本信息

- 2 x 网卡
- 12 个 IP 地址
- 10 个 SQL Server Server 服务实例(正在运行)
- 10 个 SQL Server 代理服务器服务实例(正在运行)
- 1 x SQL Server 浏览器服务(未运行)

网卡配置

Windows Server NIC 的配置如下:

- 1 x NIC(备份网络) 
    - 10.2.0.1 
- 1 x 网卡 (LAN)
    - 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
    - 全部听:没有

使用上述设置,每个“Instance nm ”都必须单独配置,以响应配置端口上的 IP 特定呼叫。(注意:作为一个额外的好处,每个实例将能够监听默认的 SQL Server 端口 1433,这反过来将大大简化防火墙配置,因为您将能够使用端口规则sql-server只是说。)

TCP/IP 属性“Instance01” - IP 地址选项卡

对于具体实例的IP地址对应的IP n表项,设置如下:

- IPn
    - 主动:是
    - 启用:是
    - IP 地址:10.2.1.1
    - TCP 动态端口: 
    - TCP 端口:1433
- IPAll
    - 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 浏览器服务不必运行来分发对 SQL Server 实例的调用,因为每个调用都直接路由到实例特定的 SQL Server(服务)。


将 Analysis Services 添加到实例

软件供应商现在希望提高用户体验并提供针对现有数据运行一些分析查询的能力。软件供应商要求我们安装 SQL Server Analysis Services。这是一个特定于实例的功能,在安装过程中,您必须选择要将功能添加到的实例。

防火墙配置

要允许连接到 Analysis Services,您必须在防火墙中配置以下规则:

10.2.0.2:2382 (Browser Service)
Run Code Online (Sandbox Code Playgroud)

如果我使用默认实例 (MSSQLSERVER),那么我可以在防火墙中配置以下规则:

10.2.1.1:2383 (Default Instance)
Run Code Online (Sandbox Code Playgroud)

这是根据以下文档:

SQL Server 2005 Analysis Services (SSAS) 服务器属性(SQL Server 2005,但显然对当前版本仍然有效)

连接到特定于实例的分析服务

安装完成后,您可以使用以下语法连接到特定于实例的 Analysis Services:

servername\Instance01
Run Code Online (Sandbox Code Playgroud)

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 服务。这可以创建一个难题,因为你可能需要它分析服务引擎。建议的做法是在需要时打开该服务,否则将其关闭。

哇。


发现

安装 SQL Server Analysis Services 已启动 SQL Server Browser 服务,从而产生安全考虑


问题

  1. 我可以Instance01使用 CNAME配置 SQL Server Analysis Servicesservername-ins01以绑定到 IP 地址10.2.1.1吗?

  2. 我能否以这种方式配置我的命名实例的 SQL Server Analysis Services,以便我可以再次停止SQL Server Browser服务?

Joh*_* N. 3

介绍

\n

在阅读了各种在线文章并在多实例 SQL Server 上配置多个 Analysis Services 之后,我可以为处于相同情况的人们提供以下可能的解决方案。它们都或多或少涉及配置和/或防火墙设置。它们尽可能接近特定于实例的IP : PORT和/或CNAME : PORT配置。

\n

参考资料

\n

以下是我在尝试将 Analysis Services 配置为在特定IP上运行时仔细研究的文章列表:端口配置:

\n\n
\n

抱歉,您无法将 SQL Server Analysis Service 配置为在特定 IP 地址特定端口号上运行。但是,您可以将 SQL Server Analysis Service 配置为在特定端口上运行Analysis Service 将侦听其安装的服务器上的所有 IP 地址。
\n 运行netstat -a | find ":238"说明了一切:
\n
\n TCP 0.0.0.0:2382 SERVERNAME:0 LISTENING
\n TCP 0.0.0.0:2383 SERVERNAME:0 LISTENING
\n TCP [::]:2382 SERVERNAME:0 LISTENING
\nTCP [::]:2383 SERVERNAME:0 LISTENING

\n
\n
\n

不运行 SQL Server 浏览器的解决方案

\n

如果您确实具有安全意识并且不希望人们“浏览”您的 SQL Server 以获得可用实例,那么您不希望SQL Server Browser 服务处于运行状态。此配置的起点是来自SQL Server Browser Service(数据库引擎和 SSAS)的以下语句:

\n
\n

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

\n
\n

但你会失去以下能力:

\n

强调我的;只是想要我想要的)

\n
\n
    \n
  • 任何尝试连接到命名实例但未完全指定所有参数(例如 TCP/IP 端口或命名管道)的组件。

    \n
  • \n
  • 任何生成或传递服务器\实例信息的组件,这些信息稍后可以被其他组件用来重新连接。

    \n
  • \n
  • 连接到命名实例而不提供端口号或管道。

    \n
  • \n
  • DAC 到命名实例或默认实例(如果不使用 TCP/IP 端口 1433)。

    \n
  • \n
  • OLAP 重定向器服务。

    \n
  • \n
  • 枚举 SQL Server Management Studio、企业管理器或查询分析器中的服务器。
    \n如果您在客户端-服务器方案中使用 SQL Server(例如,当您的应用程序通过网络访问 SQL Server 时),如果您停止或禁用 SQL Server Browser 服务,则必须为每个实例分配特定的端口号并编写客户端应用程序代码以始终使用该端口号。这种方法存在以下问题:

    \n
      \n
    • 您必须更新和维护客户端应用程序代码以确保其连接到正确的端口。
    • \n
    • 您为每个实例选择的端口可能会被服务器上的其他服务或应用程序使用,从而导致 SQL Server 实例不可用。
    • \n
    \n
  • \n
\n
\n

安装 SQL Server Analysis Service 后,您必须对 SSAS 配置/设置进行以下更改。

\n
\n

配置 SSAS 实例以侦听特定端口

\n

修改特定实例的(例如Instance01)SSAS 配置以侦听特定端口。每个实例(例如Instance01,,Instance02...)需要其自己的专用端口。您无法将所有实例配置为使用同一端口(例如2383

\n

... 使用 SSMS

\n
    \n
  • 连接到分析服务器(例如servername\\instance01
  • \n
  • 打开分析服务器属性。
  • \n
  • 切换到常规选项卡
  • \n
  • 向下滚动到端口设置;它应该适用2383于默认(MSSQLSERVER)实例和0命名实例,这意味着端口是动态设置的。
  • \n
  • 输入默认端口;不要使用,2382因为这可能会扰乱 SQL Server Browser 服务,该服务仍在端口上侦听2382与当前正在运行的其他 9 个 SSAS 实例的任何传入连接。您可能需要考虑使用 49152\xe2\x80\x9365535 区域中的端口号,这些端口号可供私人使用(TCP 和 UDP 端口号列表/维基百科)。
  • \n
  • 按确定。
  • \n
  • 重新启动SQL Server Analysis Services (Instance01)服务。
  • \n
\n

...用记事本

\n
    \n
  • 找到msmdsrv.ini通常在目录目录中找到的文件C:\\Program Files\\Microsoft SQL Server\\MSAS12.INSTANCE01\\OLAP\\Config
  • \n
  • 在记事本中打开该文件。
  • \n
  • 找出<Port>0</Port>设置。
  • \n
  • 输入默认端口;不要使用,2382因为这可能会扰乱 SQL Server Browser 服务,该服务仍在端口上侦听2382与当前正在运行的其他 9 个 SSAS 实例的任何传入连接。您可能需要考虑使用 49152\xe2\x80\x9365535 区域中的端口号,这些端口号可供私人使用(TCP 和 UDP 端口号列表/维基百科)。
  • \n
  • 保存更改。
  • \n
  • 重新启动SQL Server Analysis Services(Instance01)服务。
  • \n
\n
\n

配置客户端连接到特定实例

\n

为了使客户端能够连接到分析服务,您必须提供完全限定的 SQL Server 分析服务器名称 (FQSSASN) 和端口,如下所示:

\n
servername-ins01:52383\n
Run Code Online (Sandbox Code Playgroud)\n

这是SQL Server的CNAME servername\\instance01,但是因为最终会关闭SQL Server Browser服务,所以不能使用servername\\instance01:52383来连接服务器。这实际上并不重要,因为 SSAS 实例将拾取任何 IP。

\n

防火墙设置

\n

由于 SSAS 实例在专用端口上运行,因此您可以将防火墙配置为允许连接通过命名实例的 IP:端口(例如10.2.1.1:52383根据问题)。

\n

重要\n必须对专用服务器上运行的每个 SSAS 实例重复上述过程,并在此过程中递增端口号。将所有 Analysis Services 实例重新配置为侦听专用端口后,即可关闭 SQL Server Browser 服务。

\n

验证 Analysis Services 端口

\n

netstat -abno这可以通过运行并查找各个条目来验证[msmdsrv.exe]

\n
  TCP    0.0.0.0:52382          0.0.0.0:0              LISTENING         6884\n [msmdsrv.exe]\n  TCP    0.0.0.0:52383          0.0.0.0:0              LISTENING         7716\n [msmdsrv.exe]\n  TCP    0.0.0.0:52384          0.0.0.0:0              LISTENING         7248\n [msmdsrv.exe]\n\n  TCP    [::]:52382             [::]:0                 LISTENING         6884\n [msmdsrv.exe]\n  TCP    [::]:52383             [::]:0                 LISTENING         7716\n [msmdsrv.exe]\n  TCP    [::]:52384             [::]:0                 LISTENING         7248\n [msmdsrv.exe]\n
Run Code Online (Sandbox Code Playgroud)\n

行尾的数字是服务的进程号。您可以在 Windows 任务管理器 (PID) 中查找此内容,以验证特定实例的分析服务是否正在指定端口上运行。

\n

任务管理器 - MSMDSRV.exe 进程

\n

SQL Server 浏览器服务

\n

将所有 SSAS 实例配置为侦听各个端口并且现有 SQL Server 都在专用 IP 和端口上运行(如问题中所示)后,您就可以停止 SQL Server Browser 服务。

\n

每个单独的分析服务都可以通过CNAME:PORT以下语法访问:

\n
servername-ins01:52383\nservername-ins02:52384\nservername-ins03:52385\nservername-ins04:52386\n
Run Code Online (Sandbox Code Playgroud)\n