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

SSIS Data flow task implicit conversion automatically

我有以下场景:

  1. 我有一项使用 OLEDB 源的数据流任务,使用带内连接的查询从源 table 获取数据。其中一列是 varchar(8),很少有值是浮点数,其余是整型。
  2. OLEDB 目的地正在将上述数据存储到 table 中,其中对应的列是 INT。
  3. 此包部署在 SQL Server 2012 下,SQL 作业正在执行此 SSIS 包。
  4. 这个 SSIS 包在我们的一个环境中成功执行并进行隐式转换,但在其他环境中它失败并出现转换错误,这是显而易见的。

所以,我的问题是,为什么它在我们的环境中没有失败。是否有任何特定于环境、特定于 SSMS 或 SQL 特定于工作的设置可以帮助这项工作取得成功?请帮忙。

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

基于此Microsoft article

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

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