変換元コンポーネントの使用
データソースへの接続の確立 後、CData Microsoft Dynamics NAV 変換元コンポーネントを使用してデータフロータスクにデータをプルできます。
変換元コンポーネントでMicrosoft Dynamics NAV データをクエリ
下記の手順に従ってMicrosoft Dynamics NAV に接続し、データを取得し、ワークフロー内の他のコンポーネントにデータを提供します。- SSIS ツールボックスで、CData Microsoft Dynamics NAV 変換元コンポーネントをデータフロータスクにドラッグします。
- CData Microsoft Dynamics NAV 変換元コンポーネントをダブルクリックします。CData Microsoft Dynamics NAV 変換元エディターが開きます。
- [接続マネージャー]メニューで、有効なCData Microsoft Dynamics NAV 接続マネージャーを選択するか、まだない場合は新しいインスタンスを作成します。
- アクセスモードとして、[テーブルまたはビュー]または[SQL ステートメント]を選択します。GUI を使用してテーブルやビューを選択する場合は、[テーブルまたはビュー]を選択します。任意のステートメントを構成する場合は、[SQL ステートメント]を選択します。
- [Columns]タブを選択し、出力カラムの名前を任意に変更します。
サポートされているSQL 構文および例については、SELECT ステートメント を参照してください。 ストアドプロシージャを呼び出す方法については、ストアドプロシージャの呼び出し を参照してください。
パラメータ化クエリの使用
パラメータ化されたステートメントは、動的にクエリを実行してSQL インジェクション攻撃を軽減する効率的な方法を提供します。変換元コンポーネントには、カスタムSQL コマンドを使用する際に、クエリで定義されたパラメータをデータフロー内の変数にマッピングできるParameters ボタンが用意されています。本製品 は、これらのクエリをランタイムでパラメータ化されたステートメントとして実行します。Parameters オプションを使用するには、クエリにパラメータが含まれている必要があり、位置パラメータまたは名前付きパラメータとして定義されます。
- 位置パラメータ:パラメータのマッピングを設定する場合、Parameter リストの名前はクエリ内のそのパラメータのインデックス(1から始まる)である必要があります。クエリの例は以下のとおりです。
SELECT * FROM Table WHERE FirstName = ? AND Date > ?
ここで、Parameter name には、'FirstName' と'Date' をそれぞれ'1'と'2'に設定する必要があります。
- 名前付きパラメータ:パラメータのマッピングを設定する場合、Parameter リストの名前は、前の'@' 記号を除いたクエリ内のパラメータ名と正確に一致する必要があります。クエリの例は以下のとおりです。
SELECT * FROM Table WHERE FirstName = @FirstName AND Date > @Date
ここでは、Parameter 名を'FirstName' および'Date' に設定する必要があります。
式ビルダーでの動的クエリの構築
変換元コンポーネントを設定後、SSIS 式ビルダーを使用して、変換元コンポーネントがランタイムで実行するSQL ステートメントにアクセスできます。
本製品 は、これらの動的に定義されたクエリをランタイムで構築し実行します。
- SSIS デザイナーの[制御フロー]タブをクリックします。
- [プロパティ]ペインでExpressions プロパティのボックスにあるボタンをクリックします。
- [プロパティ式エディター]が表示されたら、[プロパティ]ボックス内の空の行をクリックし、ドロップダウンメニューからCData Microsoft Dynamics NAV 変換元コンポーネントのSQLStatement プロパティを選択します。次に、追加した行のボタンをクリックします。これで、式ビルダーが表示されます。
- [式]ボックスで、実行時に使用可能な変数を入力パラメータとして使用する新しいSQL コマンドを作成できます。この式は引用符で囲む必要があります。次に例を示します。
"SELECT * FROM Table WHERE FirstName = '" + @[User::Name] + "' AND Date > '" + (DT_WSTR, 50) DATEADD("day", -30, GETDATE()) + "'"