SSIS 'Column' 和 'Parameter' 无法在 unicode 和非 unicode 字符串数据类型之间转换

SSIS 'Column' and 'Parameter' cannot convert between unicode and non-unicode string data types

我有一个执行此操作的数据流任务:

  1. 来自两个不同的 OLE DB 源,运行 SQL 命令到 select 一些数据
  2. 合并加入两个数据库源
  3. 查找不同的 SQL 数据库源,检查数据是否已经存在
  4. 基于查找匹配输出与查找不匹配输出,运行 具有不同输入参数的 INSERT 语句。

问题是,在插入期间,它抱怨列 'a' 和参数“1”:

Cannot convert between unicode and non-unicode string data types.

我查阅了这个 StackFlow 建议,将列 'a' 更改为 (DT_WSTR) 字符串。但是该列已设置为该数据类型。

列'a'实际上并不是直接从数据库中抓取,而是一个常量值

SELECT 'abc'+ FORMAT(GETDATE(),'yyyyMMdd') + 'zz208874' AS a

知道我做错了什么吗?

我认为主要问题是 OLEDB Command 中如何解析查询以及 SQL 服务器数据库引擎如何定义参数数据类型。

尝试使用 CAST() 函数来避免这种情况:

 SELECT CAST('abc'+ FORMAT(GETDATE(),'yyyyMMdd') + 'zz208874' as VARCHAR(255)) AS a

或者,如果您要转换为 unicode:

SELECT CAST('abc'+ FORMAT(GETDATE(),'yyyyMMdd') + 'zz208874' as NVARCHAR(255)) AS a

或者,您可以将字符串定义为 Unicode:

SELECT N'abc'+ FORMAT(GETDATE(),'yyyyMMdd') + N'zz208874' AS a

关于参数数据类型解析问题的更多信息,您可以查看我对以下问题的回答: