我正在创建一个SSIS 2008包,它从ASCII平面文件源读取数据并将其写入SQL Server 2008数据库。 BIDS抱怨unicode和非unicode数据类型之间的隐式转换,所以我使用派生列工具来进行转换。这就是它的样子:
Derived Column Name | Derived Column | Expression | Data Type
AccountName2 | Replace 'AName' | (DT_WSTR,100) AName | string [DT_STR]
我仍然遇到同样的错误:
Validation error. InsertAccountRecords: InsertAccountRecords: Columns "AccountName2" and "AName" cannot convert between unicode and non-unicode string data types.
错误显示在SQL Server目标中,这使我相信问题是派生列中的数据类型。我将它从DT_STR转换为DT_WSTR,但根据这个数据类型名义上仍然是DT_STR,不是吗?
我用Google搜索过,我似乎无法找到这个问题的任何好答案。任何人都可以提供任何指导吗?
编辑:是的。查看派生列下游的数据查看器,AccountName2仍然以DT_STR的形式出现。为什么不是铸造铸造?
答案 0 :(得分:8)
documentation注意到只有在您选择添加新列时才能正确设置新数据类型。您需要在派生列下拉列表中选择“添加为新列”。
或者只使用数据转换转换,如果更改数据类型是您正在进行的唯一转换,这可能更容易。