2016-06-30 4 views
0

私は以前のスタッフによって作成されたBIDS統合サービスプロジェクトを維持しています。残念ながら、私はBIDSの経験がありません。プログラムで列データ型を変更しますか?

このプロセスでは、フラットファイル(一連のCSV)から情報が取得され、データベースにインポートされます。データを提供するクライアントは、最近Unicodeデータを提供するように切り替わったので、これに対応するために統合プロジェクトを更新する必要があります。現行のBIDSデータ・フローは、列ごとに「ユニコードと非ユニコードの文字列データ型間で変換できません」という検証エラーを戻します。

問題:フラットファイル接続マネージャーを更新することでこれを達成できるように見えますが、変更する必要がある数百のフィールドがあります。プログラムでこれを行う方法はありますか?これらの列の設定を手動で変更するには、多くの時間がかかり、面倒です。

  • を私はDT_WSTRにDT_STRから各列をキャストする派生列変換を使用することができます。私は試してみました

    物事。ただし、これを手動で行うには列が多すぎます。そして、各列の長さを指定する必要があるように見えますが、これは雑用です。

  • データ変換の変換も使用できますが、手動で各列をクリックしてデータ型のリストを検索し、必要なものを選択する必要があります。
  • 現在の試み:私はスクリプトコンポーネントを使用しようとしています。
+0

すべてのデータフロータスクは何ですか –

+0

フラットファイルソースとOLE dbデスティネーションがあります。エラーは別のフラットファイル(フラットファイルの宛先)に送られます。 – indigochild

+0

UTF-8をサポートするために接続マネージャの数百のフィールドのデータ型を変更する必要があることを意味しますか? – DBA

答えて

0

これを行う最も簡単な方法は、プログラム的ではありませんでした。 BIDSを使用すると、プロジェクトの基礎となるXMLを表示および編集できます。

このXMLを表示または編集するには、表示 - >コードに移動します。

すべてのSTRデータ型をユニコード対応のWSTRデータ型に置き換えたかったので、XMLで検索置換を実行しました。 dataType = "str"をdataType = "wstr"に置き換え、codePage = "65001"をcodePage = "0"に置き換えました。

1

あなたは3つの+変更を行う必要があります。2 + SSIS内とデータベース内の1つです。

SSISには、AnsiStringタイプのすべてのインスタンスをStringに変更する必要があるFlat File Connection Managerがあります。

次に、変更されたフラットファイル接続マネージャを参照するフラットファイルソースを持つData Flow Tasksは、メタデータを修正するために更新する必要があります。

SSISパッケージ内の非同期コンポーネントは、メタデータの変更に応じないため、調整する必要があります。

最後に、varcharデータ型からnvarcharに移動するように対象データベーステーブルを更新する必要があります。そうしないと、SSISは現在発生しているソースの代わりに、宛先の検証に失敗します。

私はプログラムインターフェイスからSSISを少し使いましたが、私はあなたの前にあるタスクを羨ましくはありません。 スクリプトタスクを使用してSSISパッケージを検査して変更することができますが、この操作を行うための専用のコンソール/ winformアプリケーションを作成するのが最適です。 SSISパッケージまたは専用アプリケーションでは同じデバッガですが、デバッグ - >変更 - >再起動のデバッグサイクルは、SSISパッケージを起動してからスクリプトタスクを開いてデバッグする必要がありません。

関連する問題