3

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

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

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

我采取的步骤:

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

当我在 XML 源属性中提供 XML 和 XSD 位置时,一切正常。

我可以很好地看到所有 XML 字段,因此我可以继续进行映射等。

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

所以我去了数据流的表达式并将 XML 和 XSD 指向变量(我评估了结果,结果很完美)。

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

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

正如我所提到的,我验证了 xml 文档和架构及其格式正确。当直接在 xml 源中传递它们时,它可以工作。仅当我尝试从数据流级别(作为表达式)传递这些值时,它才不起作用。

4

1 回答 1

1

您可能会发现 SSIS 2005 对数据流中添加的列反应不佳。在数据流的后续步骤之间的“箭头”中,它们似乎没有被很好地识别(这在 SSIS 的更高版本中得到了改进)。

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

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

PS,我只是在此处为相关问题添加了更多细节。

如果您“编辑”连接管理器,它将显示编辑窗口。那不是你想要的。查看“属性”窗口,您可以在其中找到“表达式”条目,位于一个空框前面。

单击空框,它将显示一个带有三个点的按钮。单击该按钮。这会调出“属性表达式编辑器”。左侧有一个带有“ConnectionString”等属性的下拉列表。在右侧,还有一个带有三个点的按钮。单击该按钮以拉出“表达式生成器”。如果您声明了任何变量,您会发现它们列在左上角,例如 User::VariableName,然后您可以将它们拖到表达式框中,它们将显示为 @[User::VariableName] . 不明显,但可行。

于 2013-03-05T18:35:13.890 回答