Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS无法确定列的正确数据类型_Ssis_Ssis Data Types - Fatal编程技术网

SSIS无法确定列的正确数据类型

SSIS无法确定列的正确数据类型,ssis,ssis-data-types,Ssis,Ssis Data Types,我有一个简单的SSIS包,它从Oracle数据库中提取数据并将数据插入sql server。在数据流中,我有3个任务: 我有一个OLEDB源代码,它运行一个非常简单的查询。挑选 表中的Col1,Col2,Col3,Col4,Col5,Col6,Col7 然后我有一个数据转换任务,它转换col6和 col7从unicode字符串[DT_WSTR]到字符串[DT_STR] OLE DB目标(sql server) 错误:SSIS将OLE DB源任务变为红色,并显示 以下错误: 输出“OLE DB”上

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

  • 我有一个OLEDB源代码,它运行一个非常简单的查询。挑选 表中的Col1,Col2,Col3,Col4,Col5,Col6,Col7
  • 然后我有一个数据转换任务,它转换col6和 col7从unicode字符串[DT_WSTR]到字符串[DT_STR]
  • OLE DB目标(sql server)
  • 错误:SSIS将OLE DB源任务变为红色,并显示 以下错误:

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

    “输出列”Col3“(23)”失败,因为发生了截断, 以及“输出列”OS_VISIT_ID上的截断行配置 (23)“指定截断失败。上发生截断错误 指定组件的指定对象

    但Col3不是文本,而是一个数字,SSIS将其检测为unicode字符串[DT_WSTR]。
    我甚至尝试在数据转换任务中将Col3转换为数字,然后再将其转换到OLEDB目标。但我仍然得到相同的错误。

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

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