Stunna Stunna - 3 months ago 33
ASP.NET (C#) Question

Querying OLAP Cubes via ASHX Service

I'm using the following code to execute a query in C#:

// Create Connection String
AdomdConnection testConnection = new AdomdConnection("Data Source=*****;User ID=******;Provider=MSOLAP.6;Persist Security Info=True;Impersonation Level=Impersonate;Password=******");

// Test Open
testConnection.Open();

// Make Query
AdomdCommand cmd = new AdomdCommand(@"SELECT { [Measures].[Payment Amount] } ON COLUMNS,
{ [Charging Low Orgs].[Charging Division].[Charging Division] } ON ROWS
FROM [Payments]", testConnection);

AdomdDataReader dataReader = cmd.ExecuteReader();

// Close Connection
testConnection.Close();


And I keep getting this error on the cmd.ExecuteReader() call:


{"XML for Analysis parser: The CurrentCatalog XML/A property was not specified."}


The only literature that I could find that was relavent to this was that the query isn't resolving because impersonation wasn't set, but I specified that in the connection string.

Another article which I don't think is related, said to enable BAM on Excel, but I don't have that option in Excel, and I fail to see how that would make a difference for a web service.

Please help!

Answer

The following example includes a catalog parameter in the connection string:

static void Main(string[] args)
        {
            AdomdConnection conn = new AdomdConnection(
                "Data Source=localhost;Catalog=Adventure Works DW Standard Edition");
            conn.Open(  );

            string commandText = "SELECT {[Measures].[Sales Amount], " +
                "[Measures].[Gross Profit Margin]} ON COLUMNS, " +
                "{[Product].[Product Model Categories].[Category]} ON ROWS " +
                "FROM [Adventure Works] " +
                "WHERE ([Sales Territory Country].[United States])";

            AdomdCommand cmd = new AdomdCommand(commandText, conn);
            AdomdDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);