AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 220810
Accepted
John K. N.
John K. N.
Asked: 2018-10-24 05:18:39 +0800 CST2018-10-24 05:18:39 +0800 CST 2018-10-24 05:18:39 +0800 CST

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

  • 772

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 服务,从而产生安全考虑。


问题

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

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

sql-server sql-server-2014
  • 2 2 个回答
  • 6589 Views

2 个回答

  • Voted
  1. David Browne - Microsoft
    2018-10-25T08:53:02+08:002018-10-25T08:53:02+08:00

    Analysis Services 始终侦听所有 IP,除非它是群集实例或在 VM 中运行。所以你不能在这个配置中禁用浏览器服务。

    如果您可以使用 IIS 和 HTTP 访问,则可以配置多个运行 Analysis Services 数据泵实例的 IIS 网站。

    • 3
  2. Best Answer
    John K. N.
    2018-10-27T05:52:05+08:002018-10-27T05:52:05+08:00

    介绍

    在阅读了各种在线文章并在多实例 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 分析服务配置为在特定 IP 地址和特定端口号上运行。但是,您可以将 SQL Server 分析服务配置为在特定端口上运行,但分析服务将侦听安装它的服务器上的所有 IP 地址。
    跑步netstat -a | find ":238"说明了一切:

    TCP 0.0.0.0:2382 SERVERNAME:0 LISTENING
    TCP 0.0.0.0:2383 SERVERNAME:0 LISTENING
    TCP [::]:2382 SERVERNAME:0 LISTENING
    TCP [::]:2383 SERVERNAME:0 LISTENING


    没有运行 SQL Server Browser 的解决方案

    如果您确实有安全意识并且不希望人们“浏览”您的 SQL Server 以获取可用实例,那么您不希望SQL Server Browser 服务处于运行状态。此配置的起点是SQL Server Browser Service (Database Engine and SSAS)中的以下语句:

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

    但是你会失去以下能力:

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

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

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

    • 在不提供端口号或管道的情况下连接到命名实例。

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

    • OLAP 重定向器服务。

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

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

    安装 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 端口号列表/维基百科)。
    • 按确定。
    • 重新启动SQL Server Analysis Services (Instance01)服务。

    ... 带记事本

    • 找到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 Analysis Services (Instance01)服务。

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

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

    servername-ins01:52383
    

    这是servername\instance01SQL 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]条目来验证:

      TCP    0.0.0.0:52382          0.0.0.0:0              LISTENING         6884
     [msmdsrv.exe]
      TCP    0.0.0.0:52383          0.0.0.0:0              LISTENING         7716
     [msmdsrv.exe]
      TCP    0.0.0.0:52384          0.0.0.0:0              LISTENING         7248
     [msmdsrv.exe]
    
      TCP    [::]:52382             [::]:0                 LISTENING         6884
     [msmdsrv.exe]
      TCP    [::]:52383             [::]:0                 LISTENING         7716
     [msmdsrv.exe]
      TCP    [::]:52384             [::]:0                 LISTENING         7248
     [msmdsrv.exe]
    

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

    任务管理器 - MSMDSRV.exe 进程

    SQL Server 浏览器服务

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

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

    servername-ins01:52383
    servername-ins02:52384
    servername-ins03:52385
    servername-ins04:52386
    
    • 2

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve