SYMPTOM:
When attempting to update the schema in a metadata where the Attribute Engine Role VLDB setting is enabled, the error below is thrown:
Error(s) occurred while loading schema: DSSSQLEngine: Schema loading error: Population Exception: The object shown in the following hierarchy no longer exists in schema: -Table XXX error. Engine Attribute Role Limit Exceeded! To get rid off this error: (1) Turn off Engine Attribute Role setting in VLDB dialog; OR (2) Use Table Alias feature.
Error(s) occurred while loading schema: 0.
CAUSE:
This error message means that the table shown in the error text needs to be split into a very large number tables. Strategy has a limitation that only allows one table to be split into no more than 100 tables. The error above is shown when this limitation is surpassed.
When the Engine Attribute Role feature is enabled, for each table in a Strategy metadata, depending on the number of attributes associated with each column in the table, Strategy splits it and creates a table for each combination. This number of tables is therefore calculated by multiplying the number of distinct attributes mapped to each column in the table. An example is shown below:
Table A contains two columns:
This means that Table A will be split into 6 (3*2) tables for each combination from these 5 attributes. This number cannot be larger than 100, otherwise the issue described above will be reproduced.
ACTION:
There are two ways to address this issue:
1) Create table aliases to separate some attribute groups, this will bring down the splitting to less than 100 tables for each of those aliases.
2) Disable the Engine Attribute Role feature at the database instance level, as shown in the screenshot below:
