IIS 7.0 上 SQL Server Analysis Services 的 HTTP 访问

引言

     今天碰到这样一个需求:Analysis Services 与IIS不在同一台机器上,但是在同一个局域网内。

问题引出

  我像以往远程访问数据库那样,打开了Sqlserver的远程服务...... 结果访问失败,老是报错:

Microsoft.AnalysisServices.AdomdClient.AdomdConnectionException: The connection either timed out or was lost. ---> System.IO.IOException: Unable to read data from the transport connection: 远程主机强迫关闭了一个现有的连接。. ---> System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。

......

解决方案     
   参考了一下
http://technet.microsoft.com/zh-cn/library/gg492140.aspx#bkmk_copy,找出了一个解决方案。

   下面只讲解决方案步骤,理论请参考http://technet.microsoft.com/zh-cn/library/gg492140.aspx#bkmk_copy

      1、拓扑图(客户端、WebService、Analysis Services都分布在不同机器上)

   客户端通过Webservice访问数据库获取数据。客户端在机器一上,Webservice部署在机器二上,AnalysisServices在机器三上。

       机器二中的IIS用来部署Webservice,机器三中IIS用来部署虚拟目录,该虚拟目录指向MSMDPUMP.dll(这是一种在 Internet Information Services (IIS) 下运行的 ISAPI 扩展插件,它可以在客户端应用程序和 Analysis Services 服务器之间抽送数据).

      

2、将MSMDPUMP.dll复制到Web服务器上的某个文件夹(机器三中操作)

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

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

    该 ISAPI 文件夹位于 <驱动器>:\Program Files\Microsoft SQL Server\<instance>\OLAP\bin\isapi。它包含以下文件和文件夹:MSMDPUMP.DLL、MSMDPUMP.INI 以及包含语言资源文件的 Resources 文件夹。

  2. 确认您的 Web 服务器上的 \inetpub\wwwroot\olap\isapi 文件夹包含以下内容:MSMDPUMP.DLL、MSMDPUMP.INI 和 Resources 文件夹。

     

3、在IIS中创建应用程序池和建立虚拟目录,和添加扩展插件(机器三中操作)

    参见上面所提的网址,将身份验证设成“匿名身份验证”

4、编辑MSMDPUMP.INI文件以便设置目标服务器(机器三中操作)

   参见上面所提的网址,SeverName设置成localhost即可,因为上面的拓扑图将虚拟目录与Analysis Services服务器部署在同一台机器上。

5、配置AnalysisService(机器三中操作)

   为数据库添加角色Role:数据库权限设置为完全控制,成员身份中为角色指定用户和组:Iuser.

通过以上步骤,即可通过IIS访问远程的Analysis Services.

6、在IIS上部署WebService(机器二中操作)

    参见上面所提的网址,将身份验证设成“匿名身份验证”

7、如何访问

     1、如果使用Microsoft Sql  Sever ManageMent,那么服务器名称为http://机器三名或IP/olap/msmdpump.dll

     2、如果在Webservice中连接,ConnectString="Data Source=http://机器三名或IP/olap/msmdpump.dll;Catalog=数据库名;";

 以上不足之处还请提出。谢谢!

原文地址:https://www.cnblogs.com/smallstone/p/2212336.html