SSAS project deployment fails with error "Internal error: Invalid enumeration value. Please call customer support."

Recently I have seen this error popping up more frequently.

It can occur when you modify a SSAS project in Visual Studio 2008 (or BIDS 2008) and try to deploy it against an existing SSAS 2008 R2 database. The full error message will usually also mention a "storagemode" element and a metadata error for instantiating a dimension object:

 

Internal error: Invalid enumeration value. Please call customer support. is not a valid value for this element.

An error occurred while parsing the 'StorageMode' element at line 1 , column xxxx under Load/ObjectDefinition/Dimension/StorageMode

Errors in the metadata manager. An error occurred when instantiating a metadata object from the file, '\\?\C:\Program Files\Microsoft SQL Server\MSAS10_50.MSSQLSERVER\OLAP\Data\<AS DB name>.0.db\<dimension name>.3.dim.xml'.

 

The issue can appear shortly after SSAS service restart, when meta data for SSAS database objects are not completely loaded yet. You typically won’t see it if the SSAS instance has been running for a while, objects were processed and/or object properties were queried.

 The problem has already been fixed for SSAS 2012. Thus you should not see it with SSAS 2012 deployments.

 For SSAS 2008 R2 the fix is rather complex, and thus we currently have workarounds only:

 

workaround a)      deploy to new SSAS target database (no incremental deployment)

 

workaround b)       prior to incremental deployment execute „DISCOVER_XML_METADATA“ XMLA Command with „ExpandFull“ argument against target database .

 

This can be done from a XMLA query window in Management Studio. It will load all meta data for the specified SSAS database completely.

 The full command syntax is:

 <Discover xmlns="urn:schemas-microsoft-com:xml-analysis">

<RequestType>DISCOVER_XML_METADATA</RequestType>

<Restrictions>

<RestrictionList xmlns="urn:schemas-microsoft-com:xml-analysis">

<DatabaseID>database ID</DatabaseID>

<ObjectExpansion>ExpandFull</ObjectExpansion>

</RestrictionList>

</Restrictions>

<Properties/>

</Discover>

 where "database ID" needs to be set to the ID of the database you are trying to deploy to. Note that database name and ID are not necessarily identical. You can determine name and ID by looking at SSAS database properties in Management Studio.