SSIS Components: Source Output ColumnName Does Not Match the Data Type "System.String" of the Source Column エラーの解決方法

この記事では、SSIS ソースコンポーネントで発生するデータ型不一致エラーの解決手順を説明します。

Date Entered: 3/6/2020    Last Updated: 3/6/2020

エラーメッセージ:
Source Output columnName does not match the data type "System.String" of the source column

このエラーは、使用しているソースコンポーネントの種類によって発生原因が異なります。

例えば、SharePoint のような非静的コンポーネントは、静的なメタデータファイルを使用する Facebook コンポーネントとは異なる動作をします。

SharePoint SSIS コンポーネントは、CData SSIS コンポーネントを実行するたびにサーバーからライブメタデータをクエリし、フィールドのデータ型を動的に決定します。テーブル定義は、SharePoint サイトの構成に基づいて動的に取得されます。カスタムフィールドの追加やフィールドのデータ型の変更など、行った変更は接続時に反映されます。

問題解決のためのトラブルシューティング手順

  • VS_NEEDSNEWMETADATA エラーは、タスクの基となるデータが変更されたときに発生します。このキャッシュをリセットしてみてください。CData ソースコンポーネントを右クリックし、「Advanced editor」(詳細エディター)をクリックして、下部にある「Refresh」ボタンをクリックします。存在しなくなったデータに依存している残りのタスクを更新してください。
  • ソースコンポーネントを削除して再作成してみてください(通常、これによりメタデータが更新されます)。
  • そのフィールドを実際にデータフローで使用しているか確認してみてください。使用していない場合は、テーブル全体のカラムを取得するのではなく、必要なカラムのみを SELECT するカスタム SQL クエリを記述することを検討してください。これにより、使用しているフィールドのデータ型が変更される可能性を最小限に抑えることができます。
  • また、ソースコンポーネントを右クリックして「Advanced Editor」(詳細エディター)を開くことで、カラムのデータ型を手動で調整することもできます。「Inputs and Outputs」タブで、出力カラムのデータ型を有効な型に変更できます。
  • 開発環境と本番環境で異なるユーザープロファイルアカウントを使用して接続している場合にも、このエラーが発生することがあります。ユーザープロファイルでフィールドの表示に関するセキュリティ設定が異なる場合、フィールドマッピングでこのエラーが発生する可能性があります。
  • 上記のいずれの方法でも解決しない場合、ソースコンポーネントのメタデータをキャッシュして動的に取得しないようにする隠し接続プロパティがあります。ただし、ローカルキャッシュに型が正しく保存されない場合、別の問題が発生する可能性があることに注意してください。メタデータキャッシュを有効にするには、接続マネージャーの Other フィールドに以下の2つのプロパティを設定する必要があります:
    • Cache Metadata
    • Cache Location
    Other フィールドには次のように設定します:
    Other: CacheMetadata=True;CacheLocation=C:\Users\Public\metadata.db;
    
    パスは任意の場所に設定できます。これにより、コンポーネントで最初にメタデータを取得する接続を行ったときに、メタデータがローカルの SQLite データベースに保存されます。

We appreciate your feedback.  If you have any questions, comments, or suggestions about this entry, please contact our support team at support@cdata.co.jp.