データ変換タスク (データ ポンプ) を含む DTS パッケージがあります。パラメーターを受け取るストアド プロシージャの結果を使用してデータを取得したいのですが、DTS は結果セットをプレビューせず、データ変換タスクで列を定義できません。
誰かがこれを機能させましたか?
警告: ストアド プロシージャは 2 つの一時テーブルを使用します (もちろん、それらをクリーンアップします)。
データ変換タスク (データ ポンプ) を含む DTS パッケージがあります。パラメーターを受け取るストアド プロシージャの結果を使用してデータを取得したいのですが、DTS は結果セットをプレビューせず、データ変換タスクで列を定義できません。
誰かがこれを機能させましたか?
警告: ストアド プロシージャは 2 つの一時テーブルを使用します (もちろん、それらをクリーンアップします)。
ストアド プロシージャのパラメーターに有効な値を入力して、実行されてデータが返されるようにします (またはデータがなくても、必要なのは列だけです)。次に、マッピングなどを実行できるはずです。次に、切断された編集を行い、実際のパラメーター値に変更します(グローバル変数から取得していると思います)。
DECLARE @param1 DataType1
DECLARE @param2 DataType2
SET @param1 = global variable
SET @param2 = global variable (I forget exact syntax)
--EXEC procedure @param1, @param2
EXEC dbo.proc value1, value2
基本的にはこのように実行して、プロシージャが結果を返すようにします。マッピングを実行してから、切断された編集で 2 番目EXEC
をコメント アウトし、最初のコメントを解除するEXEC
と、機能するはずです。
基本的には、プロシージャを実行して結果を吐き出すだけです。行が返されなくても、列は正しくマップされます。dts パッケージを作成するための本番システム (またはデータベース) にアクセスできません。そこで、ダミー データベースにそれらを作成し、ストアド プロシージャを、運用アプリが実行するのと同じ列を返すものに置き換えますが、データの行は返しません。次に、マッピングが完了したら、実際の手順でそれをプロダクション ボックスに移動すると、動作します。スクリプトを介してデータベースを追跡する場合、これはうまく機能します。スクリプトを実行して空のシェル プロシージャを作成し、完了したらスクリプトを実行して実際のプロシージャを元に戻すことができます。
いいえ、DTS を使用したストアド プロシージャは、状態をスクラップ テーブルに保存することしかできませんでした。
それらを実際にテーブルにロードする必要があります。変換を行う必要がある場合は、SQL タスクを使用してそのテーブルから perm の場所に移動できます。
しかし、ストアド プロシージャを使用してデータをソースする場合、データを同時に目的地に移動するのと同じくらい速くて簡単であることがわかりました。