SSIS使用OLEDB连接器获取错误的列类型

时间:2011-10-26 16:01:42

标签: sql-server ssis

在SSIS项目中途,某些表格字段已从char(30)更改为nvarchar(30)

但是,运行SSIS包时,会显示一条错误,指出cannot convert from unicode to non-unicode。 我正在尝试将数据直接从数据库源传输到目标。

两个连接都使用相同的数据库模式,因此不应进行转换。

检查外部列数据类型时,它会显示D_STR,但情况不再如此。

我尝试删除源和目标,希望它能清除任何类型的缓存数据,但它不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:17)

听起来像数据流任务中的元数据被缓存,需要刷新以反映新类型。

打开源,转到列,然后取消选中该列,然后检查列。点击确定。元数据现在应该刷新。

答案 1 :(得分:1)

nvarchar和nchar是unicode。相反,varchar和char是非unicode。

http://msdn.microsoft.com/en-us/library/ms187752.aspx

因此,如果要将数据从一种数据类型移动到另一种数据类型,则必须执行一些额外的转换(CAST或CONVERT)。另一个选项是查看您的适配器,以便char将使用DT-STR的SSIS DataType,nvarchar将使用SSIS DataType DT-WSTR

http://msdn.microsoft.com/en-us/library/ms141036.aspx

在不知道你的包是如何工作的情况下,我不能更具体,但希望这会让你前进。