SSIS如何从变量传递XSD路径

时间:2013-03-05 10:12:47

标签: xml variables ssis xsd schema

我正在运行SQL / BIDS 2005(当前的PROD环境)。

我正在尝试做一些基本的POC,而且任务相当简单:

  • 从硬盘驱动器中获取XML文件
  • 做一些映射
  • 使用结果更新数据库

我采取的步骤:

  • 创建新包
  • 添加数据流任务
  • 在数据流中添加XML源任务

当我在XML源属性中提供XML和XSD位置时,它完全正常工作。

我可以看到所有的XML字段都很好,所以我可以继续映射等。

以上显然是不可接受的,我需要做的是从变量传递XML和XSD值(稍后在配置文件中传递)。

所以我去了Data Flow的表达式,并将XML和XSD指向变量(我评估了结果并且它是完美的)。

......除了它不起作用。
当我尝试运行打开XML源任务时,它会抛出以下内容:

该组件在验证过程中检测到潜在的元数据损坏。 然后它将堆栈与对象引用nopt设置为一个实例...从Dts.Pipeline.ManagedComponentHostValidate(IDTSManagedComponentWrapper90包装器)开始

正如我所提到的,我验证了xml doc和schema以及格式良好的。 当直接在xml源中传递它时,它可以工作。当我尝试从数据流级别(作为表达式)传递这些值时,它才起作用。

1 个答案:

答案 0 :(得分:1)

您可能会发现SSIS 2005对数据流中添加的列的反应很差。他们似乎没有在"箭头"中得到很好的收获。在数据流的后续步骤之间(这在后来的SSIS版本中有所改进)。

您可以查看属性,特别是"元数据"选项卡,在这些箭头上查看它们是否实际包含所有列。我担心我经常不得不删除所有数据流步骤并有条不紊地重新构建它们,确保我从头开始使用完整的列。

是的,您可以在大多数地方使用变量。你需要寻找的是"表达"属性。它并不总是显而易见的。那是你告诉它使用变量的地方。在BIDS中执行此操作时,它将使用开发环境中设置的任何变量,并将设置text属性以反映该变量设置。这只是暂时的。稍后,在运行时,它实际上将使用您在运行时提供的变量。但在开发过程中,您的变量实际上必须指向例如具有正确结构的有效文件。否则,您将无法构建数据流。这就是SSIS的工作方式。在以后的版本中没有改变。

P.S。,我刚刚向related question here添加了更多细节。

  

如果你"编辑"连接管理器它会显示编辑窗口。   那不是你想要的那个。看看"属性"窗口,哪个   在那里你会找到"表达式"进入,空洞前   框。

     

点击空白框,它会显示一个带有三个点的按钮   在上面。单击该按钮。这会拉出"属性表达式   编辑&#34 ;.有一个下拉列表,其中包含" ConnectionString"   在左边。在右边,有一个带有三个点的另一个按钮。   单击该按钮以拉出表达式生成器"。如果你有   声明任何变量,你会发现它们列在左上角   手角,例如,作为User :: VariableName,然后您可以拖动它们   进入表达式框,它们将显示为   @ [用户:: VARIABLENAME]。不明显,但可行。