BIDS Manager 中的 SQL_variant 和 DT_WSTR 不匹配

Mismatch on SQL_variant and DT_WSTR in BIDS Manager

我正在使用 BIDS 将一些数据更新到 SQL Server 2008 R2。

我的源是 varchar 并且目标 table 将此列 VariantValue 作为 sql_variant 数据类型。所以我使用派生列转换来创建一个带有此表达式的 unicode 新列:(DT_WSTR,4000)(PNumber)。这意味着我正在将 varchar 转换为 unicode 并将其插入 sql_variant

我缓慢变化的维度连接管理器抛出此错误:

Cannot map columns of different types.
Column 'PNumber' is of type 'System.String' and column VariantValue is of type 'System.Object'

Sql_Variant 数据类型有很多限制:

  • varchar(最大)
  • varbinary(最大)
  • nvarchar(最大)
  • xml
  • 文字
  • ntext
  • 图片
  • 行版本(时间戳)
  • sql_variant
  • 地理
  • hierarchyid
  • 几何
  • 用户自定义类型
  • 日期时间偏移量

所以我认为您的行源是 Varchar(Max) 所以即使您将其转换为

(DT_STR,4000,1252)(PNumber)

它会起作用。

或者您可以使用 SQL 命令作为源并将列从中转换为 VARCHAR(4000)NVARCHAR(4000)

注意:当使用MAX长度时,SSIS将其视为blob数据DT_TEXT

参考文献