設定 IIS 7.0 上 SQL Server Analysis Services 的 HTTP 存取

您可以設定 MSMDPUMP.dll (這是在 Internet Information Services (IIS) 中執行的一個 ISAPI 擴充程式,可以將資料從用戶端應用程式提取到 Analysis Services 伺服器,然後再從 Analysis Services 伺服器提取回用戶端應用程式) 來啟用 Analysis Services 的 HTTP 存取。此方法會在您的 OLAP 方案需要下列功能時,針對連接至 Analysis Services 提供一個替代方式。

  • 用戶端存取是透過網際網路或外部網路連接進行,但會限制可啟用的通訊埠。或者,用戶端連接是來自相同網路的不信任網域。

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

  • 需要 Windows 整合式安全性以外的驗證方法。IIS 支援匿名連接和基本驗證。設定 Analysis Services 進行 HTTP 存取可讓您搭配 Analysis Services 使用這些替代的驗證方法。

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

本主題說明如何使用執行 IIS 7.0,設定 Analysis Services 執行個體的 HTTP 存取。這些指示適用於介面為 IIS 7.0 的任何 Analysis Services OLAP 執行個體支援版本,包括 SQL Server 2008 R2、SQL Server 2008 和 SQL Server 2005。

本主題包含下列各節:

概觀

將 MSMDPUMP.dll 複製到 Web 伺服器上的資料夾中

在 IIS 中建立應用程式集區與虛擬目錄

設定 IIS 驗證並加入延伸模組

編輯 MSMDPUMP.INI 檔案來設定目標伺服器

測試您的設定

概觀

MSMDPUMP 是一個 ISAPI 延伸程式,可載入 IIS 並重新導向至位於相同電腦或相同網域內之遠端電腦的 Analysis Services 執行個體。您必須針對您要連接的每個 Analysis Services 執行個體,建立並設定一個虛擬目錄,其中每個都有自己的一組 MSMDPUMP 檔案。每一組 MSMDPUMP 檔案中的組態檔都會指定用於每個 HTTP 端點的 Analysis Services 伺服器執行個體名稱。

在 IIS 上,MSMDPUMP 會使用 Analysis Services OLE DB 提供者,透過 TCP/IP 連接至 Analysis Services。Analysis Services 和 IIS 都必須位於相同網域或信任的網域,原生連接才會成功。

當 MSMDPUMP 連接至 Analysis Services 時,它會利用 Windows 使用者識別這麼做。此帳戶將是匿名帳戶 (如果您是設定匿名連接的虛擬目錄) 或 Windows 使用者帳戶。這個帳戶在 Analysis Services 伺服器和資料庫上必須擁有適當的資料存取權限。

[!附註]

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

SSAS_HttpAccess_Pump

下表列出您針對不同狀況啟用 HTTP 存取時的其他考量。

狀況

組態

相同電腦上的 IIS 和 Analysis Services

這是最簡單的組態,因為它可讓您搭配 NTLM 使用預設組態 (其伺服器名稱為 localhost)、本機 Analysis Services OLE DB 提供者,以及 Windows 整合式安全性。假設用戶端也位於相同網域,使用者驗證對使用者而言是透明的,您不需要採取其他任何動作。

不同電腦上的 IIS 和 Analysis Services

針對此拓撲,您必須在 Web 伺服器上安裝 Analysis Services OLE DB 提供者。您也必須編輯 msmdpump.ini 檔案,以便在遠端電腦上指定 Analysis Services 執行個體的位置。

此拓撲加入了雙躍點驗證步驟,其中認證必須從用戶端流向 Web 伺服器,然後再流向後端 Analysis Services 伺服器。如果您要使用 Windows 認證和 NTLM,將會出現錯誤,因為 NTLM 不允許將用戶端認證委派給另一部伺服器。最常見的解決方案是搭配安全通訊端層 (SSL) 使用基本驗證,但在存取 MSMDPUMP 虛擬目錄時,這將需要使用者提供使用者名稱和密碼。更直接的方法可能是啟用 Kerberos 並設定 Analysis Services 限制的委派,讓使用者可以用透明的方式存取 Analysis Services。

請考慮要在 Windows 防火牆中解除封鎖哪些通訊埠。您將需要解除封鎖兩部伺服器上的通訊埠,以便存取 IIS 上的 Web 應用程式,以及遠端伺服器上的 Analysis Services。

用戶端連接是來自不信任網域或外部網路連接

來自不信任網域的用戶端連接會進一步導入驗證的限制。根據預設,Analysis Services 使用 Windows 整合式驗證,這種驗證需要使用者與伺服器位於相同網域上。如果您有從網域外部連接至 IIS 的外部網路使用者,當伺服器設定為使用預設值時,那些使用者會發生連接錯誤。

因應措施包括,讓外部網路使用者使用網域認證,透過 VPN 連接。不過,更好的方法可能是在 IIS 網站上啟用基本驗證和 SSL。

將 MSMDPUMP.dll 複製到 Web 伺服器上的資料夾中

在本節中,您要將 MSMDPUMP 可執行檔、組態檔以及資源檔從 Analysis Services 程式資料夾複製到您在檔案系統上建立的 OLAP 虛擬目錄資料夾。

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

  1. 在 Web 伺服器上,建立下列資料夾:<磁碟機>:\inetpub\wwwroot\olap

  2. 將 Analysis Services 電腦上的 ISAPI 資料夾內容複製到您剛才建立的 \inetpub\wwwroot\olap 資料夾。

    您可以在 <磁碟機>:\Program Files\Microsoft SQL Server\<執行個體>\OLAP\bin\isapi 中找到 ISAPI 資料夾。該資料夾中包含下列檔案和資料夾:MSMDPUMP.DLL、MSMDPUMP.INI,以及包含語言資源檔的 Resources 資料夾。

    [!附註]

    請注意,在最新版的 SQL Server 中,執行個體名稱的格式已變更。如果您要使用 SQL Server 2008 R2,預設的執行個體名稱為 MSAS10_50.MSSQLSERVER。如果您要使用舊版 SQL Server,則會依安裝順序循序建立執行個體名稱,其中 MSSQL.1 是第一個安裝的服務,而 MSSQL.2 是第二個服務,以此類推。您可能需要開啟執行個體資料夾來判斷哪一個資料夾有 Analysis Services 程式檔案。

  3. 請確認您 Web 伺服器上的 \inetpub\wwwroot\olap\isapi 資料夾中包含下列檔案和資料夾:MSMDPUMP.DLL、MSMDPUMP.INI,以及 Resources 資料夾。

在 IIS 中建立應用程式集區與虛擬目錄

設定 HTTP 存取是從建立可提供幫浦端點的應用程式集區與虛擬目錄開始。

建立應用程式集區

  1. 啟動 IIS 管理員。按一下 [開始],指向 [執行],然後輸入 Inetmgr。

    SSAS_HttpAccess_Inetmgr

  2. 以滑鼠右鍵按一下 [應用程式集區],然後按一下 [新增應用程式集區]。使用 .NET Framework v2.0.50727,在 Managed 管線模式設為 [傳統] 的情況下,建立名稱為 OLAP 的應用程式集區。

    SSAS_HttpAccess_AddAP

  3. 根據預設,IIS 會使用 Network Service 做為安全性識別來建立應用程式集區。若要變更您剛才建立之應用程式集區的識別,以滑鼠右鍵按一下 OLAP,然後選取 [進階設定]

    SSAS_HttpAccess_AdvSettings

  4. 在 [識別] 中,按一下 IIS 所指定的內建帳戶。根據您要使用的 Windows 版本,這是 [Network Service] (顯示在螢幕擷取畫面中) 或 [ApplicationPoolIdentity]。按一下此屬性的 [變更] 按鈕,以您要使用的自訂帳戶取代內建帳戶。

  5. 根據預設,IIS 會在 64 位元作業系統上,將 [啟用 32 位元應用程式] 屬性設為 false。如果您從 64 位元的 Analysis Services 安裝複製 msmdpump.dll,對 64 位元 IIS 伺服器上的 MSMDPUMP 延伸程式而言,這是正確的設定。如果您從 32 位元安裝複製 MSMDPUMP 二進位,則將其設為 true。請立即檢查此屬性以確認設定是否正確。

建立虛擬目錄

  1. 在 [IIS 管理員] 中,開啟 [網站],以滑鼠右鍵按一下 [預設的網站] (或您要用於存取幫浦的網站),然後按一下 [新增虛擬目錄]

  2. 在 [別名] 中輸入 OLAP。

  3. 在 [實體路徑] 中,按一下瀏覽按鈕並瀏覽至 C:\inetpub\wwwroot\olap。按一下 [確定]

    SSAS_HttpAccess_AddVdir

  4. 以滑鼠右鍵按一下您剛建立的 OLAP 虛擬目錄,然後按一下 [轉換成應用程式]

  5. 在 [加入應用程式] 對話方塊中的 [應用程式集區] 旁,按一下 [選取],然後選擇您在上一節中建立的 OLAP 應用程式集區。

  6. 按兩次 [確定] 接受變更,並且轉換應用程式。

設定 IIS 驗證並加入延伸模組

在本節中,您會進一步設定您剛建立的 OLAP 虛擬目錄。您將會指定驗證方法,然後加入指令碼對應。如需有關驗證方法的詳細資訊,請參閱<IIS 驗證方法>。

  1. 在 [IIS 管理員] 中,依序開啟 [網站][預設的網站],然後選取 OLAP 虛擬目錄。

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

    SSAS_HttpAccess_IIS

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

    這是最安全而且是建議的模式,但是此驗證會要求 IIS 能夠使用 Microsoft Active Directory® 或其他機制存取使用者網域認證。如果 Analysis Services 和 IIS 位於不同的電腦上,您將需要啟用 Kerberos 並將 Analysis Services 設定成限制的委派。討論所有可能的組態超出本主題的範圍。

    SSAS_HttpAccess_IISAuth

  4. 或者,如果您的用戶端和伺服器應用程式位於不同的網域,請啟用 [基本驗證]。此模式會要求使用者輸入使用者名稱和密碼。使用者名稱和密碼是透過 HTTP 連接,傳送到 IIS。IIS 將會使用提供的認證,嘗試模擬使用者。請注意,建立傳送密碼之目標系統的任何人都必須有數種方式來保護通訊通道的安全。IIS 提供一組可協助您保護通道安全的工具。如需詳細資訊,請參閱<如何在 IIS 7 上安裝 SSL>。

    當您要從用戶端收集使用者認證時,基本驗證相當實用,因為使用者可以使用不同於其個人 Windows 登入帳戶的認證來存取網站。當您選取 [基本驗證] 或時,IIS 會針對使用者名稱和密碼,讀取每個要求的 HTTP 標頭。如果它找不到適當的認證,IIS 會傳送一個回應給用戶端,要求使用者名稱和密碼。用戶端會提示使用者提供認證,然後使用 Base64 編碼,將使用者名稱和密碼傳送到伺服器。雖然認證經過編碼,但是它們沒有經過加密,因此並不安全。這就是為什麼我們強烈建議網站使用基本驗證和 SSL 的組合來加密用戶端傳送到伺服器的認證。

  5. 除非您要透過 IUSR_<computername> 支援連接,否則停用 [匿名驗證]。如果您啟用 [匿名驗證],IIS 將永遠優先使用它,即使您啟用其他驗證方法也一樣。

    如果您沒有啟用 [匿名驗證],請確認您 Web 伺服器上的 IUSR_<computername> 帳戶在 Analysis Services 資料庫上擁有適當的資料存取權限。

    選取此模式時,幫浦 (msmdpump.dll) 會使用 IUSR_<computername> 的認證執行。因此,Analysis Services 的每個連接都會以 IUSR_<computername> 使用者開啟。選取此模式時,哪個使用者要連接至 IIS 以及哪個使用者要連接至 Analysis Services 並沒有差別。這個模式最可能在非常受到控制的環境中找到,其中使用者可以或無法透過存取控制清單存取虛擬目錄。

  6. 按一下 OLAP 虛擬目錄來開啟主頁面。按兩下 [處理常式對應]

    SSAS_HttpAccess_IIS

  7. 以滑鼠右鍵按一下頁面的任何位置,然後選取 [新增指令碼對應]。在 [新增指令碼對應] 對話方塊中,指定 *.dll 做為要求路徑、指定 c:\inetpub\wwwroot\olap\msmdpump.dll 做為可執行檔,然後輸入 OLAP 做為名稱。

    SSAS_HttpAccess_AddScript

  8. 按一下 [要求限制]

  9. 在 [動作] 索引標籤上,確認已選取 [所有動作]。按一下 [確定],然後再按一下 [確定] 來完成新增指令碼對應。

    SSAS_HttpAccess_RequestRestrictions

  10. 出現允許 ISAPI 延伸程式的提示時,按一下 [是]

    SSAS_HttpAccess_ISAPIPrompt

編輯 MSMDPUMP.INI 檔案來設定目標伺服器

開啟 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 防火牆中,允許該通訊埠的傳入連接。如需詳細資訊,請參閱<為 Analysis Services 的存取設定 Windows 防火牆>。

如果您將 Analysis Services 的具名執行個體或預設執行個體設定為接聽固定的通訊埠,您必須將通訊埠編號加入至伺服器名稱 (例如,<ServerName>AW-SRV01:55555</ServerName>),而且您必須在 Windows 防火牆中,允許該通訊埠的傳入連接。

測試您的設定

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

如果 Web 應用程式要接聽固定的通訊埠,請將通訊埠編號附加到伺服器名稱或 IP 位址 (例如,http://my-web-srv01:8080/olap/msmdpump.dll 或 http://123.456.789.012:8080/olap/msmdpump.dll)。

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

  • 在 Excel 的 [資料] 中,按一下 [連接]。在 [取得外部資料] 中,按一下 [從其他來源],然後選擇 [從 Analysis Services]。在 [伺服器名稱] 中,輸入 msmdpump 延伸模組的 HTTP 位址:http://my-web-srv01/OLAP/msmdpump.dll。

  • 在 Management Studio 的 [連接到伺服器] 對話方塊中,選取 [Analysis Services] 做為伺服器類型。在 [伺服器名稱] 中,輸入 msmdpump 延伸模組的 HTTP 位址:http://my-web-srv01/OLAP/msmdpump.dll。

請務必使用更嚴格的測試進行後續追蹤,方法是,使用在連接來源之網路環境中執行的實際用戶端電腦。請記得授與 Analysis Services 伺服器上的適當權限 (IUSR_<computername> (如果您啟用 [匿名連接]) 或透過 IIS 連接至 MSMDPUMP 之使用者的 Windows 識別)。