先日の教訓をもとに、開発用のサーバたちは、Virtual Serverをインストールして、開発環境を整えている最中。とりあえず、自分のWindows XPはJune CTPになりましたので、次のIntegration Servicesを試すことにしました。
私の周囲では、データ収集の段階では、DB同士の直接連携よりも、CSVやXMLでデータをやりとりするほうが主で、ファイルとして取得するフローが多くなりそうです。さらに、ファイル共有以外だと、FTPよりは、HTTP/HTTPSでの取得が一般的になっています。
このため、SQL Serverにデータを取り込む場合は、
- リモートのサーバからデータを取得する処理を行う。(HTTPとかHTTPSとか)
- データフロータスクで、変換元として「フラットファイルからの変換」、変換先として「SQL Serverへの変換」を行う
といったフローで行けるなあと思いました。
ただ、困ったのが、どうやってHTTPで取得するのかということ。FTPに関しては、組み込みで「FTPタスク」が用意されていたのですが、HTTPの分は、それっぽいものが無い模様。
自分でバッチスクリプトを用意するしかないかなと諦めたは良いものの、その時は「VBとかC#などで、Socketプログラムを書かないといけないのかも」と思うと、この手に明るくない私は、かなり凹んでしまいました。
その後、「そういえば、Windows版のwgetみたいなものを使えば良いじゃないか!」と言うことに気がつき、あわててWEBを検索したところ、YamaKenさんのBlogがヒット。
また、こちらの記事に続いて、河端さんによる、「bitsadminの使い方」の記事も発見することができました。せっかくWindowsな環境なのだから、wgetでは無く、Microsoft提供のものを使いたいなと思っていただけに、大変有難いものでした。
まだお試し段階ですが、こんな具合で実行してみました。
1. 簡単なバッチファイルを用意し、c:\testJob.batと名前をつけて保存。
bitsadmin /TRANSFER testJob /download /priority normal \
http://microsoft.com/ c:\microsoft.html
2. Integration Servicesプロジェクトの「プロセス実行タスク」を追加
3. エディタを開いて、Executableにc:\testJob.batを指定。
ちなみに、思った以上にbitsadminには色々オプションがありまして、ちょっと驚いております。(wgetよりも、かなり多い?)YamaKenさんや河端さんのご解説通りですが、ジョブとして実行させるのも出来そうです。