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