1

我有一个简单的 SSIS 包,它从 Oracle 数据库中选择数据并将数据插入到 sql server。在 DataFlow 中,我有 3 个任务:

  1. 我有一个运行非常简单查询的 OLE DB 源。从表中选择 Col1、Col2、Col3、Col4、Col5、Col6、Col7。
  2. 然后我有一个数据转换任务,将 col6 和 col7 从 unicode STRING[DT_WSTR] 转换为 STRING[DT_STR]。
  3. OLE DB 目标(sql 服务器)。

错误:SSIS 将 OLE DB 源任务变为红色并显示以下错误:

输出“OLE DB 源输出”(11) 上的输出列“Col3”(23) 出现错误。返回的列状态为:“文本被截断或一个或多个字符在目标代码页中不匹配。”。

“输出列“Col3”(23)”由于发生截断而失败,并且“输出列“OS_VISIT_ID”(23)”上的截断行配置指定了截断失败。指定组件的指定对象发生截断错误。

但是 Col3 不是文本,而是数字,SSIS 将其检测为 unicode STRING[DT_WSTR]。我什至尝试在数据转换任务中将 Col3 转换为数字,然后再转到 OLE DB 目标。但我仍然得到同样的错误。

4

1 回答 1

2

单击错误输出 - 选择截断,然后选择重定向行。然后在源之后添加一个联合阶段,以将常规输出与“错误”行连接起来。将数据查看器附加到错误行并查看它所抱怨的数据类型。它现在将正常运行任务。

PS:一些古怪的供应商驱动程序 - 要求 - 你这样做,即使它本身永远不会“失败”。例如 Acucorp XBDC 驱动程序(读取一些奇怪的 db 格式平面文件) - 如果您不设置错误输出,即使配置了错误行后每一行都会通过正常输出,也会失败。

于 2011-05-03T07:26:31.953 回答