5

データ変換タスク (データ ポンプ) を含む DTS パッケージがあります。パラメーターを受け取るストアド プロシージャの結果を使用してデータを取得したいのですが、DTS は結果セットをプレビューせず、データ変換タスクで列を定義できません。

誰かがこれを機能させましたか?

警告: ストアド プロシージャは 2 つの一時テーブルを使用します (もちろん、それらをクリーンアップします)。

4

3 に答える 3

3

ストアド プロシージャのパラメーターに有効な値を入力して、実行されてデータが返されるようにします (またはデータがなくても、必要なのは列だけです)。次に、マッピングなどを実行できるはずです。次に、切断された編集を行い、実際のパラメーター値に変更します(グローバル変数から取得していると思います)。

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 パッケージを作成するための本番システム (またはデータベース) にアクセスできません。そこで、ダミー データベースにそれらを作成し、ストアド プロシージャを、運用アプリが実行するのと同じ列を返すものに置き換えますが、データの行は返しません。次に、マッピングが完了したら、実際の手順でそれをプロダクション ボックスに移動すると、動作します。スクリプトを介してデータベースを追跡する場合、これはうまく機能します。スクリプトを実行して空のシェル プロシージャを作成し、完了したらスクリプトを実行して実際のプロシージャを元に戻すことができます。

于 2008-09-17T21:46:07.173 に答える
0

いいえ、DTS を使用したスト​​アド プロシージャは、状態をスクラップ テーブルに保存することしかできませんでした。

于 2008-09-17T21:16:30.583 に答える
0

それらを実際にテーブルにロードする必要があります。変換を行う必要がある場合は、SQL タスクを使用してそのテーブルから perm の場所に移動できます。

しかし、ストアド プロシージャを使用してデータをソースする場合、データを同時に目的地に移動するのと同じくらい速くて簡単であることがわかりました。

于 2008-09-17T21:15:36.733 に答える