配置对 IIS 7.0 上 SQL Server Analysis Services 的 HTTP 访问

您可以通过配置 MSMDPUMP.dll(这是一种在 Internet Information Services (IIS) 下运行的 ISAPI 扩展插件,它可以在客户端应用程序和 Analysis Services 服务器之间抽送数据),实现对 Analysis Services 的 HTTP 访问。在您的 OLAP 解决方案需要以下功能时,此方法可替代用于连接到 Analysis Services 的方法:

  • 客户端访问通过 Internet 或 extranet 连接进行,并且对可以启用的端口有限制。或者,客户端连接来自同一网络中的不可信域。

  • 客户端应用程序在允许 HTTP 但不允许 TCP/IP 连接的网络环境下运行。

  • 要求并非 Windows 集成安全性的身份验证方法。IIS 支持匿名连接和基本身份验证。通过为 HTTP 访问配置 Analysis Services,可以将这些替代身份验证方法与 Analysis Services 一起使用。

  • 客户端应用程序无法使用 Analysis Services 客户端库(例如,在 UNIX 服务器上运行的 Java 应用程序)。如果无法将 Analysis Services 客户端库用于数据访问,则可以使用 SOAP 和 XML/A 通过直接 HTTP 连接来连接到 Analysis Services 实例。

本主题说明如何使用 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 服务器和数据库具有适当的数据访问权限。

注意注意

请记住,为了允许与远程 Analysis Services 服务器的客户端连接,需取消阻止 Windows 防火墙中的端口。有关详细信息,请参阅为 Analysis Services 访问配置 Windows 防火墙

SSAS_HttpAccess_Pump

下表列出您为不同情形启用 HTTP 访问时需要注意的其他事项。

情形

配置

IIS 和 Analysis Services 位于同一台计算机上

这是最简单的配置,因为它允许您使用默认配置(其中,服务器名称为 localhost)、本地 Analysis Services OLE DB 访问接口以及与 NTLM 的 Windows 集成安全性。假定客户端也处于相同域中,用户身份验证对于用户而言是透明的,并且您不需要执行任何其他工作。

IIS 和 Analysis Services 位于不同计算机上

对于此拓扑,您必须将 Analysis Services OLE DB 访问接口安装在 Web 服务器上。您还必须编辑 msmdpump.ini 文件,以便指定 Analysis Services 实例在远程计算机上的位置。

此拓扑添加了双跃点身份验证步骤,其中,凭据必须从客户端流到 Web 服务器,然后流到后端 Analysis Services 服务器上。如果您在使用 Windows 凭据和 NTLM,系统将会显示错误消息,因为 NTLM 不允许将客户端凭据委托给第二个服务器。最常见的解决方案是将基本身份验证用于安全套接字层 (SSL),但是,这就要求用户在访问 MSMDPUMP 虚拟目录时提供用户名和密码。一个更为直接的方法可能是启用 Kerberos 并且配置 Analysis Services 约束的委托,以便用户能够以透明的方式访问 Analysis Services。

考虑要在 Windows 防火墙中取消阻止的端口。您将需要取消阻止这两台服务器上的端口,以便允许访问 IIS 上的 Web 应用程序以及远程服务器上的 Analysis Services。

客户端连接来自不可信域或 extranet 连接

来自不可信域的客户端连接对身份验证带来进一步的限制。默认情况下,Analysis Services 使用 Windows 集成身份验证,这要求用户与服务器处于同一域中。如果您具有从域的外部连接到 IIS 的 Extranet 用户,则在服务器配置为使用默认设置时,这些用户将会收到连接错误。

解决方法包括让 Extranet 用户使用域凭据通过 VPN 进行连接。但是,一个更好的方法可能是在您的 IIS 网站上启用基本身份验证和 SSL。

将 MSMDPUMP.dll 复制到 Web 服务器上的某个文件夹

在此部分中,您将 MSMDPUMP 可执行文件、配置文件和资源文件从 Analysis Services 程序文件夹复制到您在文件系统上创建的 OLAP 虚拟目录文件夹。

必须为 NTFS 文件系统格式化该驱动器。指向您创建的文件夹的路径不得包含任何空格。

  1. 在 Web 服务器上,创建以下文件夹:<驱动器>:\inetpub\wwwroot\olap

  2. 将 Analysis Services 计算机上 ISAPI 文件夹的内容复制到您刚创建的 \inetpub\wwwroot\olap 文件夹中。

    该 ISAPI 文件夹可位于 <驱动器>:\Program Files\Microsoft SQL Server\<instance>\OLAP\bin\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 创建名为 OLAP 的应用程序池,并且将托管管道模式设置为“典型”**。

    SSAS_HttpAccess_AddAP

  3. 默认情况下,IIS 通过将网络服务用作安全标识,创建应用程序池。若要更改您刚创建的应用程序池的标识,请右键单击 OLAP,然后选择**“高级设置”**。

    SSAS_HttpAccess_AdvSettings

  4. 在“标识”中,单击 IIS 指定的内置帐户。根据您所使用的 Windows 版本,该标识将是**“网络服务”(显示在屏幕快照中)或 ApplicationPoolIdentity。单击此属性的“更改”**按钮,以便用您要使用的自定义帐户替换该内置帐户。

  5. 默认情况下,在 64 位操作系统上,IIS 将**“启用 32 位应用程序”**属性设置为 false。如果您从 Analysis Services 的 64 位安装中复制了 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_<计算机名称> 进行的连接,则禁用**“匿名身份验证”**。如果您启用匿名身份验证,IIS 将始终首先使用该方法,即使您启用了其他身份验证方法也是如此。

    如果您确实启用了匿名身份验证,则请确保您的 Web 服务器上的 IUSR_<计算机名称> 帐户对于 Analysis Services 数据库具有适当的数据访问权限。

    在选择此模式后,抽取 (msmdpump.dll) 将使用 IUSR_<计算机名称> 的凭据运行。因此,与 Analysis Services 的每个连接都作为 IUSR_<计算机名称> 用户打开。在选择此模式后,在连接到 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\OLAPand 文件夹中的 msmdpump.ini 文件,查看该文件的内容。该文件应该如下所示:

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

如果您为其配置 HTTP 访问的 Analysis Services 实例位于本地计算机上并且作为默认实例安装,则无需更改该设置。否则,您必须指定服务器名称(例如 <服务器名称>ADWRKS-SRV01</服务器名称>)。对于作为命名实例安装的服务器,请确保追加该实例名称(例如 <ServerName>ADWRKS-SRV01\Tabular</ServerName>)。

默认情况下,Analysis Services 侦听 TCP/IP 端口 2383。如果您将 Analysis Services 作为默认实例安装,则无需在 <服务器名称> 中指定任何端口,因为 Analysis Services 自动知道如何侦听端口 2383。但是,您确实需要在 Windows 防火墙中允许与该端口的入站连接。有关详细信息,请参阅为 Analysis Services 访问配置 Windows 防火墙

如果您将 Analysis Services 的命名实例或默认实例配置为侦听固定端口,则必须将该端口号添加到服务器名称(例如 <服务器名称>AW-SRV01:55555</服务器名称>),并且必须在 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_<计算机名称>;或者是通过 IIS 连接到 MSMDPUMP 的用户的 Windows 标识)。