Tuesday, June 4, 2013

An Extra Mile: Configure HTTP Access to Analysis Services on Internet Information Services (IIS) 7.0

Through this post I'll try to explain how to connect MS Office Excel to Analysis Services Cube but through HTTP access

The idea of configuring such approach is that normally, you need to be connected to the domain containing your SQL servers to be able to connect your excel file with the external OLAP source (Cube). while on the other hand what if I need users to be able to do ad-hoc reporting from home or mainly outside the domain ? ... So the solution for this is to Configure HTTP Access to Analysis Services ;)

These instructions I'm going to explain are valid for any supported version or edition of:

  1. Analysis Services instance that interfaces with IIS 7.0,
  2. SQL Server 2005 or later versions (SQL Server 2012, SQL Server 2008 R2, SQL Server 2008)
  3. HTTP access is supported for both tabular mode and multidimensional mode servers.

Important Note (Study this table from Microsoft MSDN before applying the below steps):
Scenario
Configuration
IIS and Analysis Services on the same computer
This is the simplest configuration because it allows you to use the default configuration (where the server name is localhost), the local Analysis Services OLE DB provider, and Windows integrated security with NTLM. Assuming that the client is also in the same domain, user authentication is transparent to the user, with no additional work on your part.
IIS and Analysis Services on different computers
For this topology, you must install the Analysis Services OLE DB provider on the web server.
Provider (.msi) file is located in [Deployment Folder]\Release\Release_1.1\Prerequisites\SQL2008R2_SSAS_OLEDB_Provider
You must also edit the msmdpump.ini file to specify the location of Analysis Services instance on the remote computer.
This topology adds a double-hop authentication step, where credentials must flow from the client to the web server, and on to the backend Analysis Services server. If you are using Windows credentials and NTLM, you will get an error because NTLM does not allow delegation of client credentials to a second server. The most common solution is to use Basic authentication with Secure Sockets Layer (SSL), but this will require users to provide a user name and password when accessing the MSMDPUMP virtual directory. A more straightforward approach might be to enable Kerberos and configure Analysis Services constrained delegation so that users can access Analysis Services in a transparent manner.
Consider which ports to unblock in Windows Firewall. You will need to unblock ports on both servers to allow access to the web application on IIS, and to Analysis Services on a remote server.
What I'm going to apply/explain in this article is the "IIS and Analysis Services on different computers" approach.

"Enough with the boring readings already :D ........ NOW Let's Go"

The following steps explain how to set up HTTP access to an Analysis Services default instance using IIS 7.0:

  1. Copy the MSMDPUMP.dll to a folder on the Web server:
    • On each WFE server, create the an OLAP folder under: C:\inetpub\wwwroot\wss\VirtualDirectories\OLAP
    • Copy the contents of the ISAPI folder on the Analysis Services computer to the C:\inetpub\wwwroot\wss\VirtualDirectories\OLAP folder you just created.(Note: The ISAPI folder can be found at <drive>:\Program Files\Microsoft SQL Server\<instance>\OLAP\bin\isapi. It contains the following files and folder: MSMDPUMP.DLL, MSMDPUMP.INI, and a Resources folder that contain language resource files.)
    •  Verify that the “\inetpub\wwwroot\wss\VirtualDirectories\OLAP\” folder on your web server contains the following:
      • MSMDPUMP.DLL
      • MSMDPUMP.INI
      • Resources folder


  2. Create an application pool and virtual directory in IIS:
    • Start IIS Manager > open Sites
    • Under "Default Web Site" > Navigate to Find your OLAP Folder
      (Note: You can create a SharePoint Application and add the OLAP application beneath it as well)
    • On the OLAP Folder:
      • Right-click the OLAP virtual directory, and then click Convert to Application

      • In Alias, type OLAP
      • In Physical Path, click the browse button and navigate to C:\inetpub\wwwroot\wss\VirtualDirectories\OLAP. Click OK

      • Click OK twice to accept the changes, and to convert the application


  3. Configure IIS authentication and add the extension:
    • Select the OLAP virtual directory.
    • Double-click Authentication in the IIS section of the main page
    • Disable all the Authentication methods, and enable only Basic Authentication
    • Click the OLAP virtual directory to open the main page. Double-click Handler Mappings.
    • Right-click anywhere on the page and then select Add Script Map.
    • In the Add Script Map dialog box, specify
      • *.dll as the request path
      • C:\inetpub\wwwroot\VirtualDirectories\OLAP\msmdpump.dll as the executable
      • Type OLAP as the name
    • Click Request Restrictions
    • On the Verbs tab, verify that “all verbs” is selected. Click OK, and then click OK again to finish adding the script mapping
    • When prompted to allow the ISAPI extension, click yes



  4. Edit the MSMDPUMP.INI file to set the target server:
    • Open the msmdpump.ini file located in folder C:\inetpub\wwwroot\VirtualDirectories\OLAP and take a look at the contents of this file. It should look like the following:
    • If the Analysis Services instance for which you are configuring HTTP access is a default instance, you will either leave the (*.ini) file as it is or specify the server name (for example, <ServerName>MyServer</ServerName>).
    • But if the analysis services Instance is a named instance, then be sure to append the instance name (In my Case Its named: <ServerName>lms-sql-vs01</ServerName>)



  5. Give Access to users will be logging on to the OLAP application:
    • On each WFE, Navigate to "C:\inetpub\wwwroot\wss\VirtualDirectories\OLAP"
    • On the OLAP folder > Right Click > Properties > Security Tab
      • Edit and Add the groups/users that you need them to access the targeted OLAP Cube with default permissions.




  6. Configure SSL Certificate:
    • If you are to publish your website/SharePoint application with HTTPS, then:
      • Install/Request a Valid SSL Certificate to publish your website using HTTPs.
      • Make Sure that your default web site/your SharePoint application is published and successfully accessed externally.



  7. Test your Configuration:
    • [Approach 1: Internal Testing]:
      • Inside your SQL Server, on the desktop> right click > create new document
      • Rename the document to "TestHTTPAccess" and replace the extension from ".TXT" to ".UDL"
      • Open the UDL file, on the "Provider" tab, select the provider "Microsoft OLEDB Provider for Analysis Services 10.0"
      • On the "Connection" tab, write the following:
        • Data Source: http://<your website name>/OLAP/msmdpump.dll (Replace <your website name> with your internal SharePoint/WebSite URL)
        • User Name: <domain-name>\<user-name>
          (Write the username of the user(s) you previously added to the OLAP folder permissions)
        • Password: <Your Password>
      • Click on Test Configuration, if it Succeeds, then continue with approach 2

    • [Approach 2: External Testing]:
      • Open a new MS Office Excel sheet (2007, 2010 or 2013)
      • From the Data tab > Choose from Other Sources > from Analysis Services
      • In the Data connection wizard, Write your SharePoint application/WebSite URL (http(s)://<your website name>/OLAP/msmdpump.dll) and the user name and password of the user with access permissions on your cube
      • If connection is successful, you should be able to see your Cube, and start working with your pivot table(To know how to integrate these Excel Reports with SharePoint, kindly follow my post on using Kerberos authentication with SP 2010 excel services >  http://ahmedmedhat141084.blogspot.com/2013/06/using-sharepoint-2010-with-excel.html)

That's it :D
Now you can start building your Pivot Table and Pivot Chart normally using excel.

References (Read especially if you need to know how to configure Firewall access):

No comments:

Post a Comment