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的文章。。。但不知道如何正确地做