0

使用 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)

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

4

1 回答 1

0

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

使用最新的所有行都正确导入,没有任何错误的字符。

于 2013-05-03T11:18:07.420 回答