通过忽略维度键错误的 XMLA 脚本处理维度和多维数据集
Posted
技术标签:
【中文标题】通过忽略维度键错误的 XMLA 脚本处理维度和多维数据集【英文标题】:Process dimension and cube via XMLA script ignoring Dimension Key errors 【发布时间】:2015-09-22 20:50:27 【问题描述】:在 SSAS 中,当我们从 Visual Studio 手动处理维度时,可以选择忽略维度键错误。但是我在 XMLA 脚本中没有看到它的等价物,尽管有很多 binging 和谷歌搜索。如果可能,请提供帮助。
【问题讨论】:
【参考方案1】:XMLA 脚本仅提及您要使用选项处理的维度/事实/数据库。其余多维数据集的所有设置(例如:忽略重复键)都是从多维数据集本身继承的。因此,如果您在 SSAS 多维数据集中设置了这些属性,那么它将被小心处理。 但是,您可以通过 XMLA 单独处理每个维度以避免其他关键相关问题,但这并不简单,您必须获取每个维度的 XMLA 脚本 例如:
<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Parallel>
<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" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300">
<Object>
<DatabaseID>Database_Name</DatabaseID>
<DimensionID>Dimension_Name</DimensionID>
</Object>
<Type>ProcessFull</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>
</Parallel>
</Batch>
基本上,您可以避免 SSAS 多维数据集本身的维度键错误。例如,当表中同时存在 NULL 和空白时,会出现重复错误。
更新
您可以通过转到 数据库 > 流程 > 更改设置来更改维度设置
然后点击尺寸键错误标签并设置您想要的值
完成后单击“确定”并单击“脚本”以生成相关的 XMLA 脚本。
您会注意到,现在您的 XMLA 将具有您选择的值的 ErrorConfiguration 节点。
XMLA - ReportAndStop
<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<ErrorConfiguration 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" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300">
<KeyErrorLimit>2</KeyErrorLimit>
<KeyErrorLimitAction>StopLogging</KeyErrorLimitAction>
<KeyNotFound>ReportAndStop</KeyNotFound>
<KeyDuplicate>ReportAndStop</KeyDuplicate>
<NullKeyConvertedToUnknown>ReportAndStop</NullKeyConvertedToUnknown>
<NullKeyNotAllowed>ReportAndStop</NullKeyNotAllowed>
</ErrorConfiguration>
<Parallel>
<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" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300">
<Object>
<DatabaseID>Database_Name</DatabaseID>
</Object>
<Type>ProcessFull</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>
</Parallel>
</Batch>
您也可以通过将所有默认值更改为其他值来生成相同的值,一旦获得 XMLA,然后给它一个所需的值。
【讨论】:
您好 Anuj,感谢您的宝贵意见。我知道如何获取维度和多维数据集的 XMLA 脚本,并且我还知道如何在一个脚本中处理多个维度和多维数据集。您能否在此处编写包含忽略错误选项的不直接步骤。谢谢。 我遵循了您列出的所有步骤。但是,部署的维度和多维数据集没有在 XMLA 脚本上生成 ErrorConfiguration 元素。根据这篇文章,看起来我们可以在 XMLA 上显式添加 ErrorConfiguration 元素。 msdn.microsoft.com/en-us/library/ms186610(v=sql.110).aspx。我会试试这个。 @MerinNakarmi 如果在错误配置选项卡中保留默认值,则它不会出现在 XMLA 脚本中。但是,尝试将每个值更改为“reportAndStop”并将 ErrorLimitAction 更改为“StopLogging”,然后您将看到 ErrorConfiguration 父节点将所有子节点。尝试此步骤,然后将值更改为您想要的值。我正在使用执行上述步骤后得到的“reportAndError”XMLA 脚本更新我的答案。 我只从 Visual Studio 端看到了更改设置。今天我也在SSMS方面看到了它。在 SSMS 端更改设置并生成脚本确实会在 XMLA 脚本上添加 ErrorConfiguration 标记。非常感谢阿努杰。我接受了答案并投了赞成票。干杯。 @MerinNakarmi 很高兴它解决了您的问题。快乐编码:)【参考方案2】:这里有两种简单的方法。
A.来自 Visual Studio
B.从 SQL Server 管理工作室
生成的 XMLA 脚本不会在 XMLA 脚本中显示 ErrorConfiguration 元素,但它会自动处理您配置的忽略错误。您可以在 SQL Server 代理或服务中的任何位置使用这些 XMLA 脚本来自动处理多维数据集/维度。
【讨论】:
以上是关于通过忽略维度键错误的 XMLA 脚本处理维度和多维数据集的主要内容,如果未能解决你的问题,请参考以下文章
BI之SSAS完整实战教程7 -- 设计维度细化维度中 :浏览维度,细化维度