Date: Mon, 24 Jul 2006 10:59:20 +0900
From: "Akira Horikawa" <who@example.ne.jp>
堀川です。
回答ではありませんが、アドバイスです。
SQLDMOを使う理由を考えてみて下さい。
アタッチでデータベースを組み込むのであれば、普通は、SQL文を
実行するのが筋だと思います
MSDEがインストールされているのですから、osql コマンドがあります。
インストールプロセスから子プロセス等でアタッチを実行するとか、
他の手段を考えることはどうでしょうか?
VB(オブジェクトを含む)に固執して別に悪いと言うわけではありませんが、
その良い点と悪い点を認識して、幅広い視点からシステムを開発してみて
下さい
例えば、VB の Shell 関数を使って子プロセスで osql コマンドを起動して、
osql が出力する内容を VB 側で検査したい場合は、
Shell "cmd.exe /c ""osql.exe -? > d:\work\output.txt """
を実行して、出力されたテキストファイルの内容を読み出さなければ
いけません。
テキストファイルの読み出しは、難しくはないですが、結構面倒です。
もし仮に、ActivePerl がインストールされていれば、
open(FD,'osql -E -h-1 -s "&" -w 1024 -Q"SELECT name,filename FROM
master.dbo.sysdatabases" |' );
while(<FD>) {
if( /(\S+) *&([\S ]+\S)/ ) {
push(@name,$1);
push(@file,$2);
}
}
close FD;
foreach $i ( 0 .. $#name ) {
print "$name[$i]:$file[$i]\n";
}
こんな感じで、調べることもできます。
もちろん、事前にその環境に Perl が入っていることが前提になります。
VBでも正規表現オブジェクトなどがありますが、Perl のような便利さはありませ
ん。
もしPerl があれば、
もっと簡単にシステムが作れるのに。。。
という点を認識するために取り上げた例題です。
Perl 以外のほかのスクリプトでも構いません。
VBに固執していたら、このような視点は見えず、視野が狭いままでしょう。
すでに存在する道具(osqlなどのようなコマンド)と、それを組み合わせる手段
(パイプやリダイレクト)、そして標準入出力で作業が用済みになるような
問題に対して、わざわざ面倒なオブジェクトを使ってどうのこうのと、
プログラムを書く必要はありません。
Perlではなく、cmd.exeの中の、バッチファイルの命令を組み合わせても構いませ
ん。
あるいは、適切なバッチファイルをVBからテキストファイルとして生成し、それを
実行するという手段でも良いでしょう
同様に、SQL文で簡単にできることを、わざわざ他の手段でプログラムする
必要性は無いと思います
SQL文じゃ遅くて処理速度優先のため使うという目的があれば、理に
かなっています。
ただ何となく使うというのであれば、再考した方がよいと思います。
スキルアップのためという理由であれば、SQLDMOは、将来的に、どのような
扱いになるかわからないので、マイクロソフトの標準(ドットネット)を使った方が
良いでしょう。
------------------------------------
Epata-IT/日本技術ソフト開発
堀川 明 (Akira Horikawa)
07月24日(月曜日) 10時56分記
mailto:who@example.ne.jp
http://www.horikawa.ne.jp/msde/
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|