SSAS维度ProcessUpdate报错:刚性属性关系无法修改求助
关于SSAS ProcessUpdate维度更新报错的问题
问题背景
我是SSAS新手,之前一直使用ProcessUpdate常规更新维度,执行的XMLA语句如下:
<Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200"> <Object> <DatabaseID>Central</DatabaseID> <DimensionID>Prestatarios</DimensionID> </Object> <Type>ProcessUpdate</Type> <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process>
之前运行正常,但最近执行时出现报错,错误信息如下:
<root xmlns="urn:schemas-microsoft-com:xml-analysis:empty"> <Exception xmlns="urn:schemas-microsoft-com:xml-analysis:exception" /> <Messages xmlns="urn:schemas-microsoft-com:xml-analysis:exception"> <Error ErrorCode="3238002695" Description="Internal error: The operation terminated unsuccessfully." Source="Microsoft Analysis Services" HelpFile="" /> <Error ErrorCode="3240034307" Description="Errors in the OLAP storage engine: Rigid relationships between attributes cannot be changed during incremental processing of a dimension. The error occurred when processing attribute 'Sub Grupo'. Table: 'dbo_Prestatarios', Column: 'SubGrupo', Value: 'A00377'. Source attribute: 'Prestatario'. Key column value(s) of the source attribute: '7384538'." Source="Microsoft Analysis Services" HelpFile="" /> <Error ErrorCode="3240034317" Description="Errors in the OLAP storage engine: An error occurred while the 'Prestatario' attribute of the 'Prestatarios' dimension from the 'Central' database was being processed." Source="Microsoft Analysis Services" HelpFile="" /> <Error ErrorCode="3239837702" Description="Server: The current operation was cancelled because another operation in the transaction failed." Source="Microsoft Analysis Services" HelpFile="" /> </Messages> </root>
排查情况
搜索得知该错误通常由源数据中属性值变更导致,但我检查了报错涉及的Key为7384538的记录,处理前后数据完全一致:
处理前源数据
| Key | Grupo | GrupoCubo | Correlativo | IDCubo |
|---|---|---|---|---|
| 7384538 | ARIV | A00377 | 2971 | A003772971 |
处理后源数据
| Key | Grupo | GrupoCubo | Correlativo | IDCubo |
|---|---|---|---|---|
| 7384538 | ARIV | A00377 | 2971 | A003772971 |
我已尝试恢复备份、重新处理维度,但仍出现相同错误,恳请提供解决建议或指导。
解决建议
- 检查刚性关系属性的历史变更:即使当前数据一致,该记录可能在之前的处理周期中发生过变更,SSAS增量处理会检测到属性关系的变化。若有审计表或历史备份,可查询确认
Sub Grupo属性是否存在过修改。 - 执行全量维度处理:对刚性关系维度,先执行一次
ProcessFull全量处理,重置维度属性关系状态后,再尝试ProcessUpdate。 - 检查维度属性关系设置:确认
Prestatario与Sub Grupo的属性关系是否为刚性(Rigid)。若业务允许关系变更,可改为柔性(Flexible),但修改前需评估对数据一致性的影响。 - 验证源数据的隐式差异:表面值相同的字段可能存在大小写、全角/半角空格、特殊字符等隐式差异。可通过T-SQL精确对比:
SELECT * FROM dbo.Prestatarios WHERE Key = 7384538 AND SUBSTRING(SubGrupo, 1, 100) <> 'A00377' - 修复SSAS元数据一致性:尝试同步数据库元数据,或重新部署维度模型后再执行处理操作。
内容的提问来源于stack exchange,提问作者user5381634
相关产品推荐
相关产品推荐

