If you want to detect if a particular instance of Analysis Services “Denali” is running in Tabular or Multidimensional mode, you have several choices.
In the Books On Line you can find a few instructions to detect the version by looking at the icon used by SQL Server Management Studio when you connect to a SSAS instance, and if you have access to the file system of the server, you might open the MSMDSRV.INI file and look for the DeploymentMode property (0=Multidimensional, 1=SharePoint, 2=Tabular).
However, if you want to do that in a programmatic way, you should use a XMLA query. If you send this query to your server:
<Discover xmlns=“urn:schemas-microsoft-com:xml-analysis“>
<RequestType>DISCOVER_XML_METADATA</RequestType>
<Restrictions>
<RestrictionList>
<ObjectExpansion>ReferenceOnly</ObjectExpansion>
</RestrictionList>
</Restrictions>
<Properties>
<PropertyList>
</PropertyList>
</Properties>
</Discover>
You will obtain this result (boring parts omitted with …), which contains a ddl300:ServerMode property that can be Multidimensional, SharePoint or Tabular, according to the server mode you installed. The following example is the result returned on my Denali instance I’m using:
<return xmlns=“urn:schemas-microsoft-com:xml-analysis“>
<root xmlns=“…“>
<xsd:schema targetNamespace=“…” elementFormDefault=“qualified“>
…
</xsd:schema>
<row>
<xars:METADATA xmlns=“…”>
<Server>
<Name>HP7DENALI</Name>
<ID>HP7DENALI</ID>
<CreatedTimestamp>2011-07-14T01:20:08.486667</CreatedTimestamp>
<LastSchemaUpdate>2011-07-14T01:20:08.49</LastSchemaUpdate>
<Version>11.0.1440.19</Version>
<Edition>Evaluation64</Edition>
<EditionID>610778273</EditionID>
<ddl300:ServerMode>Tabular</ddl300:ServerMode>
</Server>
</xars:METADATA>
</row>
</root>
</return>
If you are lazy with XML and you like C#, you really need just three lines of code (remember to reference the Denali version of the Analysis Management Objects assembly, which is named Microsoft.AnalysisServices.dll):
Microsoft.AnalysisServices.Server server = new Microsoft.AnalysisServices.Server();
server.Connect(“Data Source=HP7denali”);
Console.WriteLine(server.ServerMode);
The ServerMode property returns an enum containing the Multidimensional, SharePoint and Tabular values.
And if you want to use PowerShell? No problem, this is a ready to use script (replace the localhostdenali string with the name of your SSAS instance):
[System.Reflection.Assembly]::LoadWithPartialName( “Microsoft.AnalysisServices”)
$server = new-object Microsoft.AnalysisServices.Server
$server.Connect(“DataSource=localhostdenali”)
write-host $server.ServerMode
Thanks to Jeffrey Wang, Darren Gosbell, Julie Strauss, Andrea Uggetti, Ashvini Sharma and Greg Galloway for providing me useful info.