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 2012 的 OLE DB 源中使用动态 SQL
SSIS - 将 Fact 与查找表匹配两次时重用 Ole DB 源