- PR -

DB2のコマンドを.netプログラムから直接起動する方法

1
投稿者投稿内容
もりりん
会議室デビュー日: 2007/09/03
投稿数: 2
投稿日時: 2007-09-04 00:10
お世話になります。

DB2のコマンドをプログラムから起動する方法として、コマンドプロンプト経由で実行する方法があるとおもいます。この際に、再編成などコネクションが必要になる場合など、コマンドが複数行になる場合はファイルに抜き出して起動するのが一般的かと思われます。

このコマンドを動的に指定したい場合は、抜き出したファイルを動的にコーディングで操作することも可能ですが、他に方法はないものでしょうか?

ストアドやSQLを呼び出すように.Netのコーディングでコマンドもコールしたいです。


よろしくお願いします。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-09-04 14:30
DB2は使ったことないですが、コマンドプロンプトから実行できるコマンドなのであれば
Process クラス
はどうでしょうか。
もりりん
会議室デビュー日: 2007/09/03
投稿数: 2
投稿日時: 2007-09-05 00:21
かめたろ様

レスありがとうございます。
やはりProcessクラスを使用した方法しかないんでしょうか…。
この方法だとコマンド群をテキストなりに保存してプロンプト起動しかないようですね。


たとえばAccessのCompactDatabaseのようにコマンドに特化したクラスはDB2は用意されていないのですかねぇ
他のデータベースだとこのような場合はどうしているんでしょうか?
コマンドツール(?)をプロセス経由で呼び出しているんでしょうか?
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-09-05 15:31
なんとなく何が聞きたいのか分かってきたような気はしますが、まだ外してるかもしれません。

引用:

やはりProcessクラスを使用した方法しかないんでしょうか…。
この方法だとコマンド群をテキストなりに保存してプロンプト起動しかないようですね。

例えば、SQLServer2000には osql.exe というコマンドプロンプトユーティリティがあります。このユーティリティは対話的にSQLを打つことができますが、引数にSQLを渡してあげて実行したらすぐにexitするということもできます。ですので、
コード:
Process.Start("osql", "-U uid -P pwd -d db -Q ""DBCC SHRINKDATABASE (A)"" ").WaitForExit()
Process.Start("osql", "-U uid -P pwd -d db -Q ""DBCC SHRINKDATABASE (B)"" ").WaitForExit()
Process.Start("osql", "-U uid -P pwd -d db -Q ""DBCC SHRINKDATABASE (C)"" ").WaitForExit()

DBCCてのはDBMS特有のメンテナンス用コマンドです。
こう書くと、テーブルA,B,Cの順でデータベースが圧縮されていきます。
DB2のコマンドプロンプトユーティリティには、このような引数は用意されていませんか?

引用:

他のデータベースだとこのような場合はどうしているんでしょうか?
コマンドツール(?)をプロセス経由で呼び出しているんでしょうか?


ADO.NET経由じゃないですかねぇ。SQLServerでは、メンテナンス系のDBMSコマンド(DBCC)もADO.NET経由で普通に実行できます。コマンドプロンプトユーティリティ経由で実行できる「コマンド」ならDB2でも同様じゃないかなぁって思うのですがどうでしょうか。

#「コマンド」って一言でいってしまうと、システムコマンドなのかDBMSのコマンドなのか混乱しますね。
1

スキルアップ/キャリアアップ(JOB@IT)