SSIS数据流任务自动隐式转换

时间:2018-01-29 15:16:07

标签: sql-server ssis etl implicit-conversion ssis-2012

我有以下情况:

  1. 我有一个带OLEDB源的数据流任务,使用带内连接的查询从源表中获取数据。其中一列是varchar(8),很少值是float,其余是这列中的int。
  2. OLEDB目的地将上述数据存储到相应列为INT的表中。
  3. 此程序包部署在SQL Server 2012下,SQL Job正在执行此SSIS程序包。
  4. 此SSIS包在我们的某个环境中成功执行并进行隐式转换,但在其他环境中,它失败并出现转换错误,这很明显。
  5. 所以,我的问题是,为什么它不能在我们的环境中失败。可能有任何特定于环境,SSMS特定或SQL作业特定的设置,这有助于这项工作取得成功吗?请帮忙。

2 个答案:

答案 0 :(得分:0)

一个环境中的数据与另一个环境不同。在失败的环境中,您有一些无法转换为INT的varchar数据。

答案 1 :(得分:0)

基于此Microsoft article

  • Varchar可以隐式转换为INT和Float
  • Float可以隐式转换为INT和Varchar
  • INT可以隐式转换为Float和Varchar

Implicit conversion

我认为您尝试导入的数据在Varchar列中包含正确的INT和Float值。另一方面,您尝试在另一台服务器上导入的数据包含无法转换的值(可能是特殊字符或其他空格或字母字符,......)确保在导入数据之前对数据进行了良好的预处理到目的地