データ変換タスク(データポンプ)を備えたDTSパッケージがあります。私はパラメータを取るストアドプロシージャの結果でデータをソースしたいと思いますが、DTSは結果セットをプレビューせず、データ変換タスクの列を定義できません。DTSデータ変換タスク内でストアドプロシージャを使用する方法は?
これは誰でも利用できますか?
警告:ストアドプロシージャが2つの一時テーブルを使用しています(そしてそれらをクリーンアップし、もちろん)
データ変換タスク(データポンプ)を備えたDTSパッケージがあります。私はパラメータを取るストアドプロシージャの結果でデータをソースしたいと思いますが、DTSは結果セットをプレビューせず、データ変換タスクの列を定義できません。DTSデータ変換タスク内でストアドプロシージャを使用する方法は?
これは誰でも利用できますか?
警告:ストアドプロシージャが2つの一時テーブルを使用しています(そしてそれらをクリーンアップし、もちろん)
あなたは、実際に、あなたはそのテーブルからそれを移動するためにSQLタスクを使用することができ、テーブルにロードする必要があります翻訳を行う必要がある場合は、パーマの場所に移動します。
しかし、ストアドプロシージャを使用してデータを取得すると、同じ時間に同じ場所に移動するのと同じくらい速くて簡単です。
いいえ、DTSでプロシージャを保存できるのは、ステートをスクラップテーブルに保存することだけでした。
ストアドプロシージャのパラメータに有効な値を入力して実行し、一部のデータを返します(データがなくても、列が必要です)。次に、マッピングなどを行うことができるはずです。次に、切断された編集を行い、実際のパラメータ値に変更します(グローバル変数からそれらを取得していると仮定します)。
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パッケージを作成するための本番システム(またはデータベース)へのアクセス権を持っていません。だから私はそれらをダミーのデータベースに作成し、ストアドプロシージャを、本番アプリケーションが実行する列と同じ列を返しますが、データの行は返さないものに置き換えます。マッピングが完了したら、それを実際の手順でプロダクションボックスに移動すると、それが動作します。これは、スクリプトを使ってデータベースを追跡すると効果的です。スクリプトを実行して空のシェルプロシージャを作成するだけで、完了したらスクリプトを実行して真のプロシージャを戻すことができます。
回答がありましたらお答えしましたか? –