ASCIIフラットファイルソースからデータを読み取り、SQL Server 2008データベースに書き込むSSIS 2008パッケージを作成しています。 BIDSは、Unicodeデータ型と非Unicodeデータ型間の暗黙のキャストについて不平を言っていたので、キャストを作成するために派生した列ツールを使用しました。これは、次のようになります。SSISがキャストされていないDT_WSTRにキャストされている、そう思われる
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にキャストしようとしていますが、Data Typeはこれによれば名目上DT_STRです。
私はグーグルで回りましたが、私はこの質問に対して良い答えを見つけることはできません。誰でもガイダンスを提供できますか?
編集:はい。派生列の下流のデータビューアを見ると、AccountName2はまだDT_STRとして出ています。なぜキャストキャスティングではないのですか?
はい。これは100%のケースであり、Data Converstion変換を追加すると、作業がはるかに簡単になりました。 – Chris
まだ、私はなぜ、なぜ、なぜ、不思議にしなければならないのですか? 置き換え時にデータ型を正しく設定しない理由は何ですか? – igorludi
@igorludiわかりませんが、SSISはデータ型の処理に関して非常に慎重です。暗黙の変換は許可されません。だから、私の推測では、単一の列はパッケージ内のさまざまな場所で異なるデータ型を持つことができないという設計上の決定がなされたことになります。これは、誰かが新しいデータ型変換を追加して、 '下流'ロジックを更新しないために、パッケージが突然破損する問題を回避します。新しい列を使用すると、パッケージ全体を更新する必要があります。また、系統解析のようなメタデータ操作が簡単になる可能性があります。しかし、私はこの推測の証拠がありません。 – Pondlife