【发布时间】:2018-10-11 00:27:10
【问题描述】:
我有一种情况,我需要使用以下条件更新或插入我的目标表。如果我的目标表中的字段(TYPE)具有值“z”,那么我需要使用源表更新目标。否则我需要在目标中插入带有 TYPE = 'z' 的源条目。我只能使用 ssis 来执行此任务(严格没有存储过程)。请让我知道我该怎么做?
数据流任务 [OLEDB 命令 [189]] 出错:ssis 错误代码 DTS_E_OLEDBERROR。发生了 oledb 错误。错误代码 0x80004005 . 有一条 oledb 记录可用。源 Microsoft SQL 服务器本机 cliemt 11.0 Hresult =0x80004005 描述:存储过程 sp_describe_undeclared_parameters 不存在或不受支持
更新中使用的代码:
UPDATE Table SET Column=? WHERE TYPE = 'Z'
我也尝试使用脚本组件来更新,因为我是 c# 的新手,谁能指导我如何在 c#script 中做到这一点。
提前致谢
【问题讨论】:
-
你试过什么?你的包裹现在是什么样子的?您希望为多少条记录执行此操作?您基本上需要使用条件拆分来拆分更新和插入行。您的插入行转到标准目的地。您的更新行转到执行 SQL 目标。我会在这个网站上找到众多答案之一并链接到它
-
我找不到一个很好的例子。你需要打开 Visual Studio,创建一个包,创建一个数据流。在数据流内部,定义一个源。通过条件拆分来馈送该源。在那个分裂中,你把你的
TYPE='Z'逻辑。这会将数据分成两个输出。数据输出之一进入标准数据流目的地(插入)。另一个进入SSIS OLE DB Command,这是一个使用参数的更新语句。请这样做,当您遇到问题时,张贴您的包裹图片并清楚地解释问题。现在你真的没有问题 -
查找转换是您正在寻找的。文章中的以下示例应该对您有所帮助:rad.pasfu.com/index.php?/archives/…
-
重读您的问题。是的,您需要使用查找转换而不是条件拆分。没关系,因为这看起来现在被放弃了
-
你为什么不试试我在评论中提到的,而是使用查找而不是条件分割
标签: c# visual-studio-2015 ssis azure-sqldw