SSIS 'Column' 和 'Parameter' 无法在 unicode 和非 unicode 字符串数据类型之间转换
SSIS 'Column' and 'Parameter' cannot convert between unicode and non-unicode string data types
我有一个执行此操作的数据流任务:
- 来自两个不同的 OLE DB 源,运行 SQL 命令到 select 一些数据
- 合并加入两个数据库源
- 查找不同的 SQL 数据库源,检查数据是否已经存在
- 基于查找匹配输出与查找不匹配输出,运行 具有不同输入参数的 INSERT 语句。
问题是,在插入期间,它抱怨列 'a' 和参数“1”:
Cannot convert between unicode and non-unicode string data types.
我查阅了这个 StackFlow 建议,将列 'a' 更改为 (DT_WSTR) 字符串。但是该列已设置为该数据类型。
- SSIS Convert Between Unicode and Non-Unicode Error
列'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
关于参数数据类型解析问题的更多信息,您可以查看我对以下问题的回答:
我有一个执行此操作的数据流任务:
- 来自两个不同的 OLE DB 源,运行 SQL 命令到 select 一些数据
- 合并加入两个数据库源
- 查找不同的 SQL 数据库源,检查数据是否已经存在
- 基于查找匹配输出与查找不匹配输出,运行 具有不同输入参数的 INSERT 语句。
问题是,在插入期间,它抱怨列 'a' 和参数“1”:
Cannot convert between unicode and non-unicode string data types.
我查阅了这个 StackFlow 建议,将列 'a' 更改为 (DT_WSTR) 字符串。但是该列已设置为该数据类型。
- SSIS Convert Between Unicode and Non-Unicode Error
列'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
关于参数数据类型解析问题的更多信息,您可以查看我对以下问题的回答: