共用方式為


在 IIS 8.0 上設定 Analysis Services 的 HTTP 存取

適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

本文說明如何設定 HTTP 端點來存取 Analysis Services 實例。 您可以藉由設定 MSMDPUMP.dll來啟用 HTTP 存取,這是在 Internet Information Services (IIS) 中執行的 ISAPI 擴充功能,並將數據提取至用戶端應用程式和 Analysis Services 伺服器。 當您的 BI 解決方案呼叫下列功能時,此方法提供連線到 Analysis Services 的替代方法:

  • 用戶端存取是透過因特網或外部網路連線,並限制可啟用埠。

  • 用戶端連線來自相同網路中的非信任網域。

  • 用戶端應用程式會在允許 HTTP 但不允許 TCP/IP 連線的網路環境中執行。

  • 用戶端應用程式無法使用 Analysis Services 用戶端連結庫(例如,在 UNIX 伺服器上執行的 Java 應用程式)。 如果您無法使用 Analysis Services 用戶端連結庫進行數據存取,您可以透過與 Analysis Services 實例的直接 HTTP 連線來使用 SOAP 和 XML/A。

  • 需要 Windows 整合式安全性以外的驗證方法。 具體而言,您可以在設定 Analysis Services 以進行 HTTP 存取時,使用匿名連線和基本身份驗證。 不支援摘要式、表單和 ASP.NET 驗證。 基本身份驗證的需求是啟用 HTTP 存取的主要原因之一。 若要深入瞭解,請參閱 Microsoft BI 驗證和身分識別委派

注意

用戶端應用程式所需的用戶端連結庫無法透過需要使用者名稱和密碼的 Proxy 伺服器連線到 Analysis Services。

您可以針對任何支援的 Analysis Services 版本設定 HTTP 存取,執行表格式模式或多維度模式。 本機 Cube 是例外狀況。 您無法透過 HTTP 端點連線到本機 Cube。

設定 HTTP 存取是安裝後的工作。 您必須先安裝 Analysis Services,才能進行 HTTP 存取。 身為 Analysis Services 系統管理員,您必須將許可權授與 Windows 帳戶,才能進行 HTTP 存取。 此外,最好先驗證您的安裝,確保其可完全運作,再進一步設定伺服器。 設定 HTTP 存取之後,您可以透過 TCP/IP 同時使用 HTTP 端點和伺服器的一般網路名稱。 設定 HTTP 存取不會使其他資料存取方法失效。

當您繼續進行 MSMDPUMP 設定時,請記住有兩個連線需要考慮:用戶端對 IIS、IIS 對 SSAS。 本文中的指示是關於 IIS 到 SSAS。 用戶端應用程式可能需要額外的設定,才能連線到 IIS。 決定是否要使用 SSL 或如何設定系結等決策,已脫離本文的範圍。 如需 IIS 的詳細資訊,請參閱 Web Server

概述

MSMDPUMP 是一種 ISAPI 擴充功能,會載入 IIS,並提供重新導向至本機或遠端 Analysis Services 實例。 藉由設定此 ISAPI 擴充功能,您會建立 Analysis Services 實例的 HTTP 端點。

您必須為每個 HTTP 端點建立並設定一個虛擬目錄。 每個端點都需要自己的一組 MSMDPUMP 檔案,以供您想要連線的每個 Analysis Services 實例使用。 此檔案集中的組態檔會指定用於每個 HTTP 端點的 Analysis Services 實例名稱。

在 IIS 上,MSMDPUMP 會透過 TCP/IP 使用 Analysis Services OLE DB 提供者連線到 Analysis Services。 雖然用戶端要求可能源自網域信任之外,但 Analysis Services 和 IIS 必須位於相同的網域或信任網域中,才能讓原生連線成功。

當 MSMDPUMP 連線到 Analysis Services 時,它會在 Windows 使用者身分識別下執行此動作。 如果您為匿名連線或 Windows 使用者帳戶設定虛擬目錄,此帳戶將會是匿名帳戶。 帳戶在 Analysis Services 伺服器和資料庫上必須具有適當的數據訪問許可權。

顯示元件之間連線的圖表

下表列出當您針對不同案例啟用 HTTP 存取時的其他考慮。

場景 配置
同一部電腦上的 IIS 和 Analysis Services 這是最簡單的組態,因為它可讓您使用預設組態(其中伺服器名稱為 localhost)、本機 Analysis Services OLE DB 提供者,以及 Windows 與 NTLM 整合式安全性。 假設客戶端也位於相同的網域中,則驗證對使用者而言是透明的,而且您的部分沒有額外的工作。
不同電腦上的 IIS 和 Analysis Services 針對此拓撲,您必須在網頁伺服器上安裝 Analysis Services OLE DB 提供者。 您也必須編輯 msmdpump.ini 檔案,以指定遠端電腦上的 Analysis Services 實例位置。

此拓撲會新增雙躍點驗證步驟,其中認證必須從用戶端流向 Web 伺服器,然後流向後端 Analysis Services 伺服器。 如果您使用 Windows 認證和 NTLM,將會收到錯誤,因為 NTLM 不允許將客戶端認證委派至第二部伺服器。 最常見的解決方案是搭配安全套接字層 (SSL) 使用基本身份驗證,但這需要使用者在存取 MSMDPUMP 虛擬目錄時提供使用者名稱和密碼。 更直接的方法可能是啟用 Kerberos 並設定 Analysis Services 限制委派,讓用戶能夠以透明的方式存取 Analysis Services。 如需詳細資訊,請參閱 設定 Analysis Services for Kerberos 限制委派

請考慮在 Windows 防火牆中解除封鎖的埠。 您必須解除封鎖兩部伺服器上的埠,以允許存取 IIS 上的 Web 應用程式,以及遠端伺服器上的 Analysis Services。
用戶端連線來自非信任網域或外部網路連線 來自非信任網域的用戶端聯機會對驗證造成進一步的限制。 根據預設,Analysis Services 會使用 Windows 整合式驗證,這需要用戶位於與伺服器相同的網域。 如果您有從網域外部連線到 IIS 的外部網路使用者,如果伺服器設定為使用預設設定,這些使用者將會收到連線錯誤。

因應措施包括使用網域認證透過 VPN 連線外部網路使用者。 不過,較佳的方法可能是在您的 IIS 網站上啟用基本身份驗證和 SSL。

先決條件

本文中的指示假設已設定 IIS,且已安裝 Analysis Services。 Windows Server 2012 隨附 IIS 8.x 作為您可以在系統上啟用的伺服器角色。

在 IIS 8.0 中 額外設定

IIS 8.0 的預設組態缺少 HTTP 存取 Analysis Services 所需的元件。 這些元件位於 SecurityApplication DevelopmentWeb Server 角色的功能區域,包括下列專案:

  • 安全性 | Windows 驗證基本身份驗證,以及數據存取案例所需的任何其他安全性功能。

  • 應用程式開發 | CGI

  • 應用程式開發 | ISAPI 擴充功能

若要確認或新增這些元件,請使用 Server Manager | 管理 | 新增角色和功能。 逐步執行精靈,直到您 伺服器角色。 向下捲動以尋找 網頁伺服器 (IIS)

  1. 開啟 Web Server | 安全性,然後選擇驗證方法。

  2. 開啟 Web Server | 應用程式開發,然後選擇 CGIISAPI 延伸模組

    Web 伺服器角色中的 ISAPI 和 CGI 功能,

IIS 位於遠端伺服器時

IIS 與 Analysis Services 之間的遠端連線需要在執行 IIS 的 Windows 伺服器上安裝 Analysis Services OLE DB 提供者 (MSOLAP)。

  1. 移至 SQL Server 2014 Feature Pack 的下載頁面

  2. 按兩下紅色的 [下載] 按鈕。

  3. 向下捲動以尋找 ENU\x64\SQL_AS_OLEDB.msi

  4. 請遵循精靈中的指示來完成安裝。

注意

請記得解除封鎖 Windows 防火牆中的埠,以允許用戶端連線到遠端 Analysis Services 伺服器。 如需詳細資訊,請參閱 設定 Windows 防火牆以允許 Analysis Services 存取

步驟 1:將 MSMDPUMP 檔案複製到網頁伺服器上的資料夾

您建立的每個 HTTP 端點都必須有自己的一組 MSMDPUMP 檔案。 在此步驟中,您會將 MSMDPUMP 可執行檔、組態檔和資源資料夾從 Analysis Services 程式資料夾複製到您將在執行 IIS 之電腦的檔案系統上建立的新虛擬目錄資料夾。

磁碟驅動器必須格式化為NTFS檔案系統。 您所建立資料夾的路徑不得包含任何空白。

  1. 複製下列檔案,位於 <磁碟驅動器>:\Program Files\Microsoft SQL Server\<實例>\OLAP\bin\isapi:MSMDPUMP.DLL MSMDPUMP。INI 和 Resources 資料夾。

    MSMDPUMP 檔案的資料夾結構,

  2. 在網頁伺服器上,建立新的資料夾:<磁碟驅動器>:\inetpub\wwwroot\OLAP

  3. 將您先前複製的檔案貼到這個新資料夾中。

  4. 確認網頁伺服器上的 \inetpub\wwwroot\OLAP 資料夾包含下列內容:MSMDPUMP.DLL MSMDPUMP。INI 和 Resources 資料夾。 資料夾結構看起來應該像這樣:

    • <磁碟驅動器>:\inetpub\wwwroot\OLAP\MSMDPUMP.dll

    • <磁碟驅動器>:\inetpub\wwwroot\OLAP\MSMDPUMP.ini

    • <磁碟驅動器>:\inetpub\wwwroot\OLAP\Resources

注意

如果資料庫是上一個版本的備份,IIS 管理員可能無法連線到目前版本的 Analysis Services。 這是由 MSMDPUMP 中的變更所造成,應該藉由從先前的工作版本複製 msmdpump.dll 檔案來解決。

步驟 2:在 IIS 中建立應用程式集區和虛擬目錄

接下來,建立應用程式集區和幫浦的端點。

建立應用程式集區

  1. 啟動 IIS 管理員。

  2. 開啟伺服器資料夾,以滑鼠右鍵按兩下 [應用程式集區] ,然後按兩下 [[新增應用程式集區]。 使用 .NET Framework 建立名為 OLAP的應用程式集區,並將 Managed 管線模式設定為 傳統

    [新增應用程式集區] 對話框的螢幕快照,

  3. 根據預設,IIS 會使用 ApplicationPoolIdentity 作為安全性身分識別來建立應用程式集區,這是 Analysis Services HTTP 存取的有效選擇。 如果您有變更身分識別的特定原因,請以滑鼠右鍵按兩下 [OLAP],然後選取 [進階設定]。 選取 ApplicationPoolIdentity。 按兩下此屬性的 [變更] 按鈕,以您想要使用的自定義帳戶取代內建帳戶。

    [進階設定] 屬性頁的螢幕快照,

  4. 根據預設,在 64 位作業系統上,IIS 會將 Enable 32 位 Applications 屬性設定為 false。 如果您從 Analysis Services 的 64 位安裝複製 msmdpump.dll,這是 64 位 IIS 伺服器上 MSMDPUMP 擴充功能的正確設定。 如果您從 32 位安裝複製 MSMDPUMP 二進位檔,請將它設定為 true。 請立即在 [進階設定] 中檢查此屬性,以確保它已正確設定。

建立應用程式

  1. 在 IIS 管理員中,開啟 Sites,開啟 預設網站。 您應該會看到名為 Olap的資料夾。 這是您在 \inetpub\wwwroot 下建立之 OLAP 資料夾的參考。

    OLAP 資料夾,再轉換成應用程式

  2. 以滑鼠右鍵按下資料夾,然後選擇 [[轉換成應用程式]

  3. 在 [新增應用程式] 中,輸入別名 OLAP。 按兩下 [選取 選擇OLAP應用程式集區。 實體路徑應設定為 C:\inetpub\wwwroot\OLAP

    用於轉換應用程式用於轉換應用程式設定

  4. 按下 [確定] 。 重新整理網站,並注意到 OLAP 資料夾現在是預設網站下的應用程式。 現在已建立 MSMDPUMP 檔案的虛擬路徑。

    在轉換成應用程式之後 OLAP 資料夾,

注意

這些指示的舊版包含建立虛擬目錄的步驟。 不再需要此步驟。

步驟 3:設定 IIS 驗證並新增擴充功能

在此步驟中,您會進一步設定您剛才建立的 SSAS 虛擬目錄。 您將指定驗證方法,然後新增腳本對應。 透過 HTTP 的 Analysis Services 支援的驗證方法包括:

  • Windows 驗證 (Kerberos 或 NTLM)

  • 基本身份驗證

  • 匿名驗證

Windows 驗證 被視為最安全,並針對使用 Active Directory 的網路利用現有的基礎結構。 若要有效地使用 Windows 驗證,所有瀏覽器、用戶端應用程式和伺服器應用程式都必須支援它。 這是最安全且建議的模式,但需要 IIS 能夠存取可驗證要求連線之使用者的身分識別的 Windows 域控制器。

針對將 Analysis Services 和 IIS 放在不同電腦上的拓撲,您必須解決使用者身分識別需要委派給遠端電腦上的第二個服務時所發生的雙躍點問題,通常是藉由啟用 Analysis Services 進行 Kerberos 限制委派。 如需詳細資訊,請參閱 設定 Analysis Services for Kerberos 限制委派

當您有 Windows 身分識別時,基本身份驗證 使用,但用戶連線來自非信任網域,禁止使用委派或模擬連線。 基本身份驗證可讓您在連接字串上指定使用者身分識別和密碼。 連接字串上的認證會用來連線到 Analysis Services,而不是使用目前使用者的安全性內容。 因為 Analysis Services 僅支援 Windows 驗證,所以傳遞至它的任何認證都必須是 Analysis Services 裝載所在的網域成員的 Windows 使用者或群組。

匿名驗證 通常會在初始測試期間使用,因為它的設定輕鬆可協助您快速驗證 Analysis Services 的 HTTP 連線。 只要幾個步驟,您就可以將唯一用戶帳戶指派為身分識別、在 Analysis Services 中授與該帳戶許可權、使用帳戶來驗證用戶端應用程式中的數據存取,然後在測試完成時停用匿名驗證。

如果您的使用者沒有 Windows 使用者帳戶,您也可以在生產環境中使用匿名驗證,但遵循鎖定主機系統上的許可權的最佳做法,如本文所述:啟用匿名驗證 (IIS 7)。 請確定已在虛擬目錄上設定驗證,而不是在父網站上設定,以進一步降低帳戶存取層級。

啟用匿名時,允許任何用戶連線至 HTTP 端點,以匿名使用者身分連線。 您將無法稽核個別的用戶連線,也無法使用使用者身分識別從模型選取數據。 如您所見,使用匿名會影響從模型設計到數據重新整理和存取的所有專案。 不過,如果用戶沒有 Windows 使用者登入的開頭,使用匿名帳戶可能是您唯一的選項。

設定驗證類型並新增文稿對應

  1. 在 IIS 管理員中,開啟 Sites開啟 [默認網站],然後選取 [OLAP 虛擬目錄]。

  2. 在主頁面的 [IIS] 區段中按兩下 [驗證]

    IIS 管理員主頁面的螢幕快照,

  3. 如果您使用 Windows 整合式安全性,請啟用 Windows 驗證

    Vdir 驗證設定的螢幕快照,

  4. 或者,如果您的用戶端和伺服器應用程式位於不同的網域,請啟用 基本身份驗證。 此模式需要使用者輸入使用者名稱和密碼。 使用者名稱和密碼會透過 HTTP 連線傳輸至 IIS。 IIS 會在連線到 MSMDPUMP 時嘗試使用提供的認證模擬使用者,但認證不會委派給 Analysis Services。 相反地,您必須在連線上傳遞有效的使用者名稱和密碼,如本檔中的步驟 6 中所述。

    重要

    請注意,任何建置密碼傳輸系統的人都必須有辦法保護通道。 IIS 提供一組可協助您保護通道的工具。 如需詳細資訊,請參閱 如何在 IIS 7 上設定 SSL

  5. 如果您使用 Windows 或基本身份驗證,請停用 匿名驗證。 啟用匿名驗證時,即使已啟用其他驗證方法,IIS 一律會先使用它。

    在 [匿名驗證] 下,幫浦 (msmdpump.dll) 會以您為匿名使用者建立的使用者帳戶執行。 聯機到 IIS 的使用者和連接到 Analysis Services 的使用者之間沒有區別。 根據預設,IIS 會使用 IUSR 帳戶,但您可以將它變更為具有網路許可權的網域用戶帳戶。 如果 IIS 和 Analysis Services 位於不同的電腦上,您將需要這項功能。

    如需如何設定匿名驗證認證的指示,請參閱 匿名驗證

    重要

    匿名驗證最有可能在極其受控制的環境中找到,其中會透過文件系統中的訪問控制清單來授與或拒絕使用者存取。 如需最佳做法,請參閱 啟用匿名驗證 (IIS 7)

  6. 按兩下 OLAP 虛擬目錄以開啟主頁面。 按兩下 處理程式對應

    處理程序對應功能圖示

  7. 以滑鼠右鍵按下頁面上的任何位置,然後選取 [[新增腳本對應]。 在 [新增腳本對應] 對話框中,將 [*.dll 指定為要求路徑、將 c:\inetpub\wwwroot\OLAP\msmdpump.dll 指定為可執行檔,然後輸入 OLAP 作為名稱。 保留與此腳本對應相關聯的所有預設限制。

    [新增腳本對應] 對話框的螢幕快照,

  8. 當系統提示您允許 ISAPI 擴充功能時,請按兩下 [是]按兩下 [是]。

    確認的螢幕快照,以新增 ISAPI 擴充功能

步驟 4:編輯 MSMDPUMP。要設定目標伺服器的 INI 檔案

MSMDPUMP。INI 檔案會指定MSMDPUMP.DLL連接的 Analysis Services 實例。 此實例可以是本機或遠端,安裝為預設值或具名實例。

開啟位於 C:\inetpub\wwwroot\OLAP 資料夾的 msmdpump.ini 檔案,並查看此檔案的內容。 看起來應該如下所示:

<ConfigurationSettings>  
<ServerName>localhost</ServerName>  
<SessionTimeout>3600</SessionTimeout>  
<ConnectionPoolSize>100</ConnectionPoolSize>  
</ConfigurationSettings>  
  

如果您要設定 HTTP 存取的 Analysis Services 實例位於本機電腦上,並安裝為預設實例,就沒有理由變更此設定。 否則,您必須指定伺服器名稱(例如,<ServerName>ADWRKS-SRV01</ServerName>)。 對於安裝為具名實例的伺服器,請務必附加實例名稱(例如,<ServerName>ADWRKS-SRV01\Tabular</ServerName>)。

根據預設,Analysis Services 會接聽 TCP/IP 埠 2383。 如果您將 Analysis Services 安裝為預設實例,則不需要在 <ServerName> 中指定任何埠,因為 Analysis Services 知道如何自動接聽埠 2383。 不過,您必須允許 Windows 防火牆中該埠的輸入連線。 如需詳細資訊,請參閱 設定 Windows 防火牆以允許 Analysis Services 存取

如果您將 Analysis Services 的具名或預設實例設定為接聽固定埠,您必須將埠號碼新增至伺服器名稱(例如,<ServerName>AW-SRV01:55555</ServerName>),而且您必須允許 Windows 防火牆中的輸入聯機到該埠。

步驟 5:授與數據訪問許可權

如先前所述,您必須授與 Analysis Services 實例的許可權。 每個資料庫物件都會有提供指定許可權層級的角色(讀取或讀取/寫入),而且每個角色都會有包含 Windows 使用者身分識別的成員。

若要設定許可權,您可以使用 SQL Server Management Studio。 在 [資料庫 | 角色 資料夾底下,您可以建立角色、指定資料庫許可權、將成員資格指派給 Windows 使用者或組帳戶,然後授與特定物件的讀取或寫入許可權。 一般而言,Cube 的讀取 許可權就足以用於使用但不會更新模型數據的用戶端連線。

角色指派會根據您設定驗證的方式而有所不同。

認證 角色指派
匿名 將 新增至在 IIS 中 編輯匿名驗證認證 中指定的帳戶清單。 如需詳細資訊,請參閱 匿名驗證
Windows 驗證 新增至成員資格清單,以透過模擬或委派要求 Analysis Services 數據的 Windows 使用者或組帳戶。

假設使用 Kerberos 限制委派,唯一需要許可權的帳戶是要求存取權的 Windows 使用者和組帳戶。 應用程式集區身分識別不需要任何許可權。
基本身份驗證 將 新增至將在連接字串上傳遞的 Windows 使用者或組帳戶成員資格清單。

此外,如果您要透過連接字串上的 EffectiveUserName 傳遞認證,則應用程式集區身分識別必須具有 Analysis Services 實例的系統管理員許可權。 在 SSMS 中,以滑鼠右鍵按下 實例 |屬性 | 安全性 | 新增。 輸入應用程式集區身分識別。 如果您使用內建的預設身分識別,則會將帳戶指定為 IIS AppPool\DefaultAppPool

顯示如何輸入 AppPoolIdentity 帳戶

如需設定權限的詳細資訊,請參閱 授權存取物件和作業 (Analysis Services)

步驟 6:測試您的設定

MSMDPUMP 的連接字串語法是 MSMDPUMP.dll 檔案的 URL。

如果 Web 應用程式在固定埠上接聽,請將連接埠號碼附加至伺服器名稱或 IP 位址(例如,http://my-web-srv01:8080/OLAP/msmdpump.dllhttp://123.456.789.012:8080/OLAP/msmdpump.dll

若要快速測試連線,您可以使用 Internet Explorer、Microsoft Excel 或 SQL Server Management Studio 開啟連線。

使用 Internet Explorer 對連線進行疑難解答

因此錯誤而終止的連接要求可能不會讓您繼續執行:「無法對 」<伺服器名稱>' 進行連線,或 Analysis Service 未在伺服器上執行」。

若要取得更豐富的錯誤,請執行下列動作:

  1. Internet Explorer>Internet Options>Advanced中,清除 [顯示易記 HTTP 訊息]的複選框。

  2. 重試連線 (例如,http://my-web-srv01:8080/OLAP/msmdpump.dll

如果您在瀏覽器視窗中看到顯示錯誤 XML,您可以排除 MSMDPUMP 作為潛在原因,並將焦點轉移到憑證。

使用 SQL Server Management Studio 測試連線

  1. 在 Management Studio 的 [連接到伺服器] 對話框中,選取 [Analysis Services 做為伺服器類型。 在 [伺服器名稱] 中,輸入 msmdpump 擴充功能的 HTTP 位址:http://my-web-srv01/OLAP/msmdpump.dll

    物件總管會顯示 HTTP 連線:

    SSMS 中顯示的 HTTP 連線

  2. 驗證必須是 Windows 驗證,而使用 Management Studio 的人員必須是 Analysis Services 系統管理員。 系統管理員可以授與其他使用者啟用存取權的進一步許可權。

使用 Excel 測試連線

  1. 在 Excel 的 [數據] 索引標籤的 [取得外部數據] 中,按兩下 [從其他來源],然後選擇 [從 Analysis Services ],以啟動 [數據連線精靈]。

  2. 在 [伺服器名稱] 中,輸入 msmdpump 擴充功能的 HTTP 位址:http://my-web-srv01/OLAP/msmdpump.dll

  3. 針對 [登入認證],如果您使用的是 Windows 整合式安全性或 NTLM 或匿名使用者,請選擇 [使用 Windows 驗證]

    針對 [基本身份驗證],選擇 [使用下列使用者名稱和密碼],然後指定用來登入的認證。 您提供的認證將會在連接字串上傳遞至 Analysis Services。

使用 AMO 測試連線

您可以使用 AMO 以程式設計方式測試 HTTP 存取,以取代伺服器端點的 URL 作為伺服器名稱。 如需詳細資訊,請參閱 論壇文章(如何透過跨網域/樹系和防火牆界限的 HTTPS 同步處理 SSAS 2008 R2 資料庫),

說明使用基本身份驗證之 HTTP(S) 存取語法的範例連接字串:

Data Source=https://<servername>/olap/msmdpump.dll; Initial Catalog=AdventureWorksDW2012; Integrated Security=Basic; User ID=XXXX; Password=XXXXX;

如需以程式設計方式設定連線的詳細資訊,請參閱在 ADOMD.NET中建立安全連線

最後一個步驟是,請務必使用在連線的來源網路環境中執行的用戶端計算機,進行更嚴格的測試。

另請參閱

論壇文章 (使用 msmdpump 和基本身份驗證的 http 存取)
設定 Windows 防火牆以允許 Analysis Services 存取
授權存取對象和作業 (Analysis Services)
IIS 驗證方法
如何在 IIS 7 上設定 SSL