SSIS 2005 - 在数据流中的 OLE DB 源中具有 UPDATE *和* SELECT

Posted

技术标签:

【中文标题】SSIS 2005 - 在数据流中的 OLE DB 源中具有 UPDATE *和* SELECT【英文标题】:SSIS 2005 - Have UPDATE *and* SELECT in OLE DB Source in Data Flow 【发布时间】:2012-04-26 05:45:52 【问题描述】:

这可能是一个愚蠢的问题,但我有一个数据流任务、OLE DB 源和平面文件目标。

在我的 OLE DB 源中,我想要一个 UPDATE 语句,然后是一个 SELECT。当我这样做时,我似乎没有将任何行写入我的平面文件。顺便说一句,我这样做是为了帮助确保如果我的选择失败,我的更新不会发生。 (我打算将这两个语句放在 BEGIN TRAN 和 COMMIT 之间。)

很遗憾,我无法使用 SSIS 事务,因为运行 SSIS 的服务器没有运行 DTC 服务。

【问题讨论】:

请详细说明您所说的是哪种更新声明。究竟是什么不起作用? 对不起,我不清楚。我希望选择/文件操作和更新操作成为一个原子事务的一部分。因此,如果更新失败,则不会创建文件,反之亦然。我假设一个人不能这样做 【参考方案1】:

假设您想要的顺序是 SELECT -> UPDATE -> WRITE_TO_FLAT_FILE,请使用您的 OLE DB 源进行选择,然后使用 OLE DB 命令进行更新。最后,使用您的平面文件目标将数据写出。

在 OLE DB 源中,将错误输出设置为“失败组件”或“重定向行”;任何一个都可以让您避免后续更新命令。

【讨论】:

【参考方案2】:

你必须更新你的控制流。

使用更新命令添加执行 SQL 任务,将绿色箭头从任务拖到数据流组件,在数据流中您将拥有 oleDBSource 和平面文件目标

【讨论】:

以上是关于SSIS 2005 - 在数据流中的 OLE DB 源中具有 UPDATE *和* SELECT的主要内容,如果未能解决你的问题,请参考以下文章

使用 SSIS 中的参数作为 OLE DB 源执行存储过程

在 SSIS 2012 的 OLE DB 源中使用动态 SQL

SSIS - 将 Fact 与查找表匹配两次时重用 Ole DB 源

SSIS:无法创建OLE DB访问器。验证列元数据是否有效

SSIS - OLE DB 目标 - 表或视图加载与快速加载

在OLE DB目标中插入数据