2008-09-17 8 views
5

データ変換タスク(データポンプ)を備えたDTSパッケージがあります。私はパラメータを取るストアドプロシージャの結果でデータをソースしたいと思いますが、DTSは結果セットをプレビューせず、データ変換タスクの列を定義できません。DTSデータ変換タスク内でストアドプロシージャを使用する方法は?

これは誰でも利用できますか?

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

+0

回答がありましたらお答えしましたか? –

答えて

0

あなたは、実際に、あなたはそのテーブルからそれを移動するためにSQLタスクを使用することができ、テーブルにロードする必要があります翻訳を行う必要がある場合は、パーマの場所に移動します。

しかし、ストアドプロシージャを使用してデータを取得すると、同じ時間に同じ場所に移動するのと同じくらい速くて簡単です。

0

いいえ、DTSでプロシージャを保存できるのは、ステートをスクラップテーブルに保存することだけでした。

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パッケージを作成するための本番システム(またはデータベース)へのアクセス権を持っていません。だから私はそれらをダミーのデータベースに作成し、ストアドプロシージャを、本番アプリケーションが実行する列と同じ列を返しますが、データの行は返さないものに置き換えます。マッピングが完了したら、それを実際の手順でプロダクションボックスに移動すると、それが動作します。これは、スクリプトを使ってデータベースを追跡すると効果的です。スクリプトを実行して空のシェルプロシージャを作成するだけで、完了したらスクリプトを実行して真のプロシージャを戻すことができます。