C# AMO OLAP查询绑定
有时,根据业务逻辑,我需要更改多维数据集中客户维度的源表 之前,我使用以下代码更改多维数据集的结构:C# AMO OLAP查询绑定,c#,sql-server,ssis,ssas,C#,Sql Server,Ssis,Ssas,有时,根据业务逻辑,我需要更改多维数据集中客户维度的源表 之前,我使用以下代码更改多维数据集的结构: MyServerDataSourceView.Schema.Tables["DimCustomers"].ExtendedProperties["QueryDefinition"] = "new query"; MyServerDataSourceView.Update(); // update to new definition DimCustomer.Process(
MyServerDataSourceView.Schema.Tables["DimCustomers"].ExtendedProperties["QueryDefinition"] = "new query";
MyServerDataSourceView.Update(); // update to new definition
DimCustomer.Process(ProcessType.ProcessAdd, EF);
MyServerDataSourceView.Schema.Tables["DimCustomers"].ExtendedProperties["QueryDefinition"] = "old regularquery";
MyServerDataSourceView.Update(); // revert back to old definition
但这是不可信的。有时它不会还原回查询定义
VisualStudio显示可以使用查询绑定。
我在尝试这样的代码:
string queryAdd = "SELECT [a],[b],[c] FROM ase.newtable";
QueryBinding queryBinding = new QueryBinding();
queryBinding.QueryDefinition = queryAdd;
DimCustomer.Process(ProcessType.ProcessAdd, queryBinding);
并得到以下错误,该错误说明的不多:
警告:0x80019002位于ProcessAdd客户维度-序列
容器:SSIS警告代码DTS_W_已达到最大错误计数。这个
执行方法成功,但引发的错误数(1)
达到允许的最大值(1);导致失败。这种情况发生了
当错误数达到中指定的数目时
最大错误计数。更改MaximumErrorCount或修复错误
我试图进行研究,但没有找到任何示例或明确的解释。检查错误是否有
InnerException
或Errors
集合,可以告诉您更多信息。你得到的是总结整个操作的最外层错误;有更多的细节埋在那里的某个地方。如果所有其他操作都失败了,您可以使用SQL Profiler捕获AMO正在执行的命令,并亲自执行该命令以了解失败的原因。对于高级场景,您甚至会发现直接构造XMLA并执行它比依赖AMO的黑盒更方便。@Jeroenmoster感谢您的评论和对profiler的提醒。您能建议如何正确构造XMLA并执行它吗?最简单的方法实际上是让Management Studio为您生成语句,方法是执行您在多维数据集上计划的任何操作,然后使用“脚本”按钮,而不是实际执行语句。然后可以使用XElement
模拟此结构。尽管您可以通过对文档的充分认真研究从头开始构建XMLA,但由于它非常冗长(…ProcessAdd…
,所有这些都具有正确的名称空间),因此需要做大量的工作。AMO工作时肯定更方便。先添加一个try-catch块,然后添加一个断点。执行包并等待代码弹出并命中断点。然后逐步检查代码,看看会出现什么错误。您还没有找到正确的错误消息。@gregGalloway是的,没错,但我甚至不确定这是正确的方法。在网上找不到类似的东西。在你的博客上,我读了一篇关于使用XMLA的文章。。。但不知道如何正确地做