Character encoding SSI-从Oracle导入的字符串字段被转换为错误/错误字符

Character encoding SSI-从Oracle导入的字符串字段被转换为错误/错误字符,character-encoding,collation,ssis,data-migration,Character Encoding,Collation,Ssis,Data Migration,我正在使用SQL Server集成服务(SSIS)将表从Oracle(11g)迁移到SQL Server 2008 R2。该表的字段是int、string(数据类型Unicode strings[DT_WSTR])和转换为图像数据类型的blob类型 SQL Server的排序规则是“Latin1\u General\u 100\u CI\u AS” 工作流程非常严格: 1) ADO NET元素从Oracle源收集数据。 2) 脚本组件通过一些数据转换将inout列与输出列映射 3) SQL Se

我正在使用SQL Server集成服务(SSIS)将表从Oracle(11g)迁移到SQL Server 2008 R2。该表的字段是int、string(数据类型Unicode strings[DT_WSTR])和转换为图像数据类型的blob类型

SQL Server的排序规则是“Latin1\u General\u 100\u CI\u AS”

工作流程非常严格:

1) ADO NET元素从Oracle源收集数据。 2) 脚本组件通过一些数据转换将inout列与输出列映射 3) SQL Server目标元素将记录存储到目标数据库

在数据迁移期间(总共只有20000条记录),一些字符串字段用亚洲字符存储,而其他具有相同值的字段则被正确移动。 例如:

  ID             CODE              USRNAME           DOCNAME
  ---------------------------------------------------------
  120            B-0000001         OAS2491          Help.pdf
  121            D-0000465         Charlie          Doc1.pdf
  122            D-0000465         Charlie          Doc2.pdf
  123            殹榁鴀ځᡑ䇜쿫       Ɫ灿풑뾧껳쮏⽏�    Doc3.pdf
  124            D-0000465         Alpha            Doc2.pdf
我首先想到的是源表中的一些特殊字符,但我检查了受影响的记录,它们与正确迁移的其他行中的记录完全相同。 ID为123的行具有与行122相同的值,显示良好

在Oracle上:
代码是一个VARCHAR2(15字节)
USRNAME是一个VARCHAR2(36字节)

SQL Server上的

代码是nvarchar(15)
USRNAME是nvarchar(36)


为什么有些行迁移时使用错误的字符,而其他行迁移时使用错误的字符,即使内容相同?

我可以通过将“SQL Server destination”组件替换为“OLE DB destination”元素来解决此问题

使用lattest,所有行都正确导入,没有任何错误字符