將 SQL Server Analysis Services (SSAS) 配置為在與 SQL Server 實例相同的 IP 上執行
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 個 SQL Server 瀏覽器服務(未執行)
網卡配置
Windows Server NIC 配置如下:
- 1 x NIC(備份網路) - 10.2.0.1 - 1 x NIC (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 - 全部聽:沒有
使用上述設置,必須單獨配置每個“實例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服務?
介紹
在閱讀了各種線上文章並在多實例 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\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]
條目來驗證: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) 中查找此資訊,以驗證特定實例的分析服務是否在指定埠上執行。
SQL Server 瀏覽器服務
一旦您將所有 SSAS 實例配置為偵聽各個埠並且現有 SQL Server 都在專用 IP 和埠上執行(如問題所示),然後您可以停止 SQL Server Browser 服務。
每個單獨的分析服務都可以通過以下
CNAME:PORT
語法訪問:servername-ins01:52383 servername-ins02:52384 servername-ins03:52385 servername-ins04:52386
Analysis Services 始終偵聽所有 IP,除非它是群集實例或在 VM 中執行。所以你不能在這個配置中禁用瀏覽器服務。
如果您可以使用 IIS 和 HTTP 訪問,則可以配置多個執行 Analysis Services 數據泵實例的 IIS 網站。