首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft.AnalysisServices更新方法的处理错误

Microsoft.AnalysisServices更新方法的处理错误
EN

Stack Overflow用户
提问于 2018-07-04 13:51:06
回答 1查看 337关注 0票数 4

我正在更新“数据源视图”中的维度定义。在SSIS脚本任务中使用C#代码执行此操作。下面是简化的C#代码:

代码语言:javascript
复制
DataSourceView ASDataSourceView;
//DataSourceView inherits from MajorObject
ASDataSourceView.Schema.Tables["DimTable"].ExtendedProperties["QueryDefinition"] = "SELECT * FROM ufc.TableWithData";
ASDataSourceView.Update();

我需要处理可能在Update()方法中出现的错误。我认为尝试捕捉通常的方法会起作用,但似乎不是这样的。我需要以某种方式获得一个xml响应对象,然后检查它是否为空(没有错误),或者解析它并构建进一步的逻辑。

我试图阅读微软的文档,但不知道如何去做。XmlaWarningCollection类

当我在SSMS中运行update xml语句时,我会得到以下消息:当更新成功时:

代码语言:javascript
复制
<return xmlns="urn:schemas-microsoft-com:xml-analysis">
  <root xmlns="urn:schemas-microsoft-com:xml-analysis:empty" />
</return>

当update失败时(由于语法错误而失败,而不是逻辑,从模拟的角度来看也不太正确):

XML解析在第9597行第63列处失败:元素结束标记中的名称必须与开始标记中的元素类型匹配。运行完成

有人能帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2018-07-09 13:54:50

我想我终于找到了解决办法:

首先,您需要启用CaptureXML选项;

代码语言:javascript
复制
ServerName.CaptureXml = true;

第二次使用XmlaResultCollection选项运行更新:

代码语言:javascript
复制
UpdateOptions uo = default(UpdateOptions);
UpdateMode om = default(UpdateMode);
XmlaWarningCollection xm = null;
ASDataSourceView.Update(uo, om, xm);

第三,执行update语句:

代码语言:javascript
复制
XmlaResultCollection resultCollection = ServerName.ExecuteCaptureLog(false, false);

之后,我能够解析resultCollection对象:

代码语言:javascript
复制
String ErrorMessages = String.Empty;

if (resultCollection.ContainsErrors) {
                ErrorMessages += $"Errors occured in cube {ConnectionString.CatalogName}:" + Environment.NewLine;
                foreach (AS.XmlaResult result in resultCol) {
                    foreach (object error in result.Messages) {
                        if (error.GetType() == typeof(AS.XmlaError))
                            ErrorMessages += "ERR: " + ((AS.XmlaError)error).Description + Environment.NewLine;
                        else if (error.GetType() == typeof(AS.XmlaWarning))
                            ErrorMessages += "WARN: " + ((AS.XmlaWarning)error).Description + Environment.NewLine;
                    }
                }
                throw new Exception(ErrorMessages);
            }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51175326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档