【问题标题】:Accessing property from COM object XML Result Set in SSIS Script Task在 SSIS 脚本任务中访问 COM 对象 XML 结果集中的属性
【发布时间】:2015-06-23 16:38:48
【问题描述】:

我正在使用提供的 SSIS 包。大部头书。我需要从 SSIS 变量中提取 XML 数据,但找不到方法。

当我在脚本任务运行时遇到断点时,我可以将鼠标悬停在变量的 Value 属性上。这向我展示了一个 COM 对象。当我展开 COM 对象以查看其属性时,我在一个名为“xml”的属性中看到了我需要的 XML 数据。如何从代码中获取此属性?

var xmldata = Dts.Variables["User::MyVariableName"].Value;
//xmldata is a COM object with no properties available at design time

这是我尝试过的:

  • 根据我在网上看到的示例将值写入文件。 这只是将“System.__ComObject”写入文件

  • 将 COM 对象强制转换为 MarshalByRefObject。这没有给我
    检索属性的更多选项

  • 将 COM 对象设置为“动态”变量。这给了我一个
    编译时错误

  • 反射 COM 对象以获取其属性
    (获取属性())。 COM 对象不支持这个,所以我回来了 一个长度为 0 的数组

  • 将结果集从 XML 更改为 DataSet 并填充 DataTable
    目的。我得到了一个包含一列多行的数据表
    “System.Byte[]”,一文不值。

这些事情都没有成功。

【问题讨论】:

    标签: ssis


    【解决方案1】:

    好吧,看来我放弃使用“动态”太早了。

    确保添加对“Microsoft.CSharp”的引用,然后执行以下代码:

    var data = Dts.Variables["User::MyVariableName"]; //Assuming not null. 
    var comObject = ((dynamic)data.value);
    var propertyValue = comObject.PropertyYouNeed;  
    

    确保您从 COM 对象中检索的属性拼写正确。直到运行时才会发现拼写错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      相关资源
      最近更新 更多