使用 SQL Server Integration Services (SSIS) 我正在将一个表从 Oracle (11g) 迁移到 SQL Server 2008 R2。该表的字段为 int、string(数据类型 Unicode 字符串 [DT_WSTR])和转换为图像数据类型的 blob 类型。
SQL Server 的排序规则是“Latin1_General_100_CI_AS”。
工作流程非常简单:
1) ADO NET 元素从 Oracle 源收集数据。2) 脚本组件通过一些数据转换将 inout 列与输出列映射 3) SQL Server 目标元素将记录存储到目标数据库
在数据迁移期间(总共只有 20'000 条记录),一些字符串字段以亚洲字符存储,而其他具有相同值的字段则被正确移动。例如:
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 上:
CODE 是 VARCHAR2(15 字节)
USRNAME 是 VARCHAR2(36 字节)
在 SQL Server 上:
CODE 是 nvarchar(15)
USRNAME 是 nvarchar(36)
为什么有些行迁移了错误的字符而其他行没有迁移,即使内容相同?