The Microsoft Analysis Services connector is part of the Enterprise Edition.
How it works
XMLA is a SOAP-over-HTTP protocol. Bag of words posts to the endpoint URL you configure, authenticating with HTTP Basic on every request — XMLA is stateless, so there is no logon round-trip.- Lists catalogs (databases) with a
DBSCHEMA_CATALOGSDiscover. - Lists the cubes/models in each catalog (
MDSCHEMA_CUBES). - Reads each cube’s hierarchies (
MDSCHEMA_HIERARCHIES) and measures (MDSCHEMA_MEASURES). - Runs MDX or DAX statements at query time with an XMLA
Execute(Format=Tabular).
Catalog/Cube (for example AdventureWorks/Sales). Its columns are the cube’s dimension hierarchies (dtype="dimension") and measures (dtype="measure"); the unique name needed to write a query is carried in each column’s metadata.unique_name.
Model-type detection. For each catalog, Bag of words probes the Tabular metadata DMV SELECT * FROM $SYSTEM.TMSCHEMA_MODEL. If it succeeds, the catalog is recorded as TABULAR (DAX and MDX both work); if it fails, the catalog is treated as MULTIDIMENSIONAL, which is always safe because MDX runs on both. Sending DAX at a Multidimensional target is rejected before the request leaves Bag of words, with an explicit “use MDX instead” error rather than a cryptic server fault.
Before you start
- The SSAS XMLA endpoint must be published over HTTP(S). SSAS’s native protocol is TCP (port 2383 by default) and Bag of words does not speak it — the only supported transport is XMLA over HTTP, which means the
msmdpump.dllIIS pump (see Step 1). - The Bag of words backend host must be able to reach that URL. There is no path discovery and no redirect following: whatever URL works in
curlis the URL to paste into the form, verbatim. - The pump’s IIS application must accept Basic authentication — that is the only scheme the connector sends.
- An SSAS account with read access to the databases you want to query.
- If the endpoint uses a certificate signed by an internal CA that the backend host does not trust, either install the CA or turn off Verify SSL.
Step 1 — Publish the msmdpump HTTP pump in IIS
This is the step that most SSAS connections fail on.msmdpump.dll is an ISAPI extension that ships with Analysis Services and forwards XMLA requests received over HTTP to the SSAS instance. It is not enabled by default — an administrator has to publish it on a Windows server running IIS (usually the SSAS server itself). Microsoft documents the full procedure as Configure HTTP Access to Analysis Services.
1
Copy the pump files
The pump ships with SSAS under the instance’s OLAP folder, in
bin\isapi. Copy that folder’s contents (including msmdpump.dll and msmdpump.ini) to a directory you will serve from IIS, for example C:\inetpub\wwwroot\olap.2
Point msmdpump.ini at the SSAS instance
Edit
msmdpump.ini and set the server name to the Analysis Services instance the pump should forward to (for example localhost or SERVER\INSTANCE). A pump pointed at the wrong instance answers requests but shows no catalogs.3
Create the IIS application
In IIS Manager, create an application (for example
/olap) whose physical path is that directory, running in an application pool with No Managed Code. Allow the msmdpump.dll ISAPI extension under ISAPI and CGI Restrictions — a blocked extension is the usual cause of an HTTP 404 on an otherwise correct URL.4
Enable Basic authentication
On the application’s Authentication settings, enable Basic Authentication. The connector authenticates with HTTP Basic only; a pump that accepts Windows/Kerberos authentication exclusively rejects it with HTTP 401.
5
Grant SSAS permissions
The account you will use must have read access to the SSAS databases. Without it the connection succeeds but reports zero catalogs.
Connect in Bag of words
Go to Data Sources → Add data source → Microsoft Analysis Services and fill in the form.
Test Connection authenticates, runs a catalog Discover, and reports how many catalogs were found. Zero catalogs is reported as a success with the note “No databases visible to this user — check permissions.”
Authentication modes
This is the only mode. It can be used two ways:
- System (shared) — one admin-supplied SSAS account discovers and queries for everyone.
- Per-user — each user supplies their own SSAS credentials, so SSAS role membership and cell/dimension security apply to that person’s queries.
Per-user authentication on database-style connectors requires an Enterprise license. See Authentication.
Querying
The agent writes MDX or DAX itself, picking the language from the model type recorded during discovery:- Multidimensional cubes — MDX only.
- Tabular models — DAX preferred, MDX also accepted.
Catalog/Cube, and members and measures are referenced by the unique names captured in the schema.
Troubleshooting
HTTP 404 — 'nothing serves XMLA at this URL path'
HTTP 404 — 'nothing serves XMLA at this URL path'
The host answered but no XMLA service lives at that path. Check the path portion of the endpoint URL (it must end in
msmdpump.dll), that the IIS application exists, and that the msmdpump.dll ISAPI extension is allowed.HTTP 401 / 403 — credentials or authentication scheme rejected
HTTP 401 / 403 — credentials or authentication scheme rejected
The endpoint was reached but the logon failed. Either the username/password is wrong, or the IIS application does not have Basic Authentication enabled — the connector sends Basic and nothing else.
Connected, but 0 catalogs found
Connected, but 0 catalogs found
The account has no read access to any SSAS database, or
msmdpump.ini points at a different instance than you expect. Grant the account read on the databases and re-test.Could not resolve the endpoint hostname (DNS)
Could not resolve the endpoint hostname (DNS)
The backend host cannot resolve the name in the URL. Use a resolvable FQDN or an IP address.
Connection timed out
Connection timed out
Nothing answered on the port. Check firewall rules between the Bag of words backend and the IIS server, and the port in the URL. Raising
timeout_sec helps only when the server is slow, not when it is unreachable.'DAX queries are only supported on Tabular models'
'DAX queries are only supported on Tabular models'
The target catalog was detected as Multidimensional. This is a guard, not a failure of the connection — the same question can be answered with MDX. If the catalog really is Tabular, confirm the account can read
$SYSTEM.TMSCHEMA_MODEL, which is how the model type is detected.