SQL Server AgentのジョブでDTSパッケージを起動する。
DTSを起動する際には「DTSRUN」ユーティリティを利用する。
いや、ほんとに、ただこれなんですけどね。やりたいことは。
ジョブで起動するときのコマンドは、例えば以下のようになります。
dtsrun /S localhost /U sa /P password /N SampleDataLoad
「/A」オプションでDTSパッケージのグローバル変数にパラメータをセットすることもできます。
dtsrun /S localhost /U sa /P password /N SampleDataLoad /A Test1_ID:8=TEST1
複数指定する場合は
dtsrun /S localhost /U sa /P password /N SampleDataLoad /A Test1_ID:8=TEST1 /A Test2_ID:8=TEST2
また、「:」の後ろにはグローバル変数のデータ型を指定する必要がありますんで、「dtsrun ユーティリティ」で何を指定すればいいかをご確認ください。
んで。
「dtsrun.exe」を含んだコマンドを単純に実行したところ問題なく完了したが、いざジョブとして設定すると何故か?エラーになる。また、正常に動作したと思ったら、dtsrun.exeが起動したままになり、返事が無い。もちろん、エラーも出ない。
モウイヤダ。
今一度、環境のほうを確認。SQL Server 2000のサービスパックが1つも適用されていないではないですか!(大きなミステイク)なりふりかまわず、SP4を適用。再起動後のジョブは失敗したが(これまた意味不明)、テーブル再作成後は正常に処理が完了することを確認( ´ー`)フゥー...
dtsrun.exeが起動したままになる問題は、SPが当たっていなかったためだと思われます。当ててないワシもワシですが、当てないとこんな基本的なこともまともに動かないことには・・・(自粛)。えっと、下記に本件に関連しそうなKBです。
- [FIX] SMP コンピュータ上で DTSRun.exe が原因でアクセス違反が発生する
- [FIX] DTS 定期ジョブが最初に実行された後完了しない
- [FIX] 引数間に複数のスペース文字を含んでいると、DTSRUN がエラーで失敗する
- [PRB] DTS: パッケージを定期ジョブとして実行すると例外が発生するか応答が停止する
また、SQL Server Agentの使い方などは、以下にまとめられてます。
コメント