dポイントプレゼントキャンペーン実施中!

sqlserver と vb.net(+バッチファイル) にてコーディングしています。

vbからバッチファイルを呼び出し、その中でDBのデタッチを行っているのですが、

「データベース '(DB名)' は現在使用中なので、デタッチできません。」

とのメッセージが出て、デタッチできません。
デタッチは、vbプログラムの中で SqlConnection を close・dispose した直後に行っています。

原因追究をしたいのですが、どのプログラムがどのDBを使用しているか
、という情報を取得することはできるでしょうか。


ご回答よろしくお願いします。

A 回答 (3件)

#2です。



やはりExpressでしたか。SQLプロファイラはExpressにはついていませんが、フリーのがあるので、ご参考までに。
少し遅いけど十分使えます。

http://www.atmarkit.co.jp/fdotnet/dotnettips/744 …

それ以外の情報(動的管理ビューやは利用状況モニタ)は2005では使えます。
    • good
    • 0

バージョンとエディションを書かないとアドバイスが難しいですが。



・SQL Serverプロファイラを流しっぱなしにして、実行してみる
・デタッチ直前にsysprocessesやsys.dm_exec_sessionsの内容を拾う
・利用状況モニタで監視する
まあどれかでやるのでしょうね。

「プログラム名」はSQL Server側は認識できません。
「どの端末からどのIDを使ったどの方法でのアクセスか」までです。

この回答への補足

>バージョンとエディションを書かないとアドバイスが難しいですが。。
うっかりしていました、すいません!
SqlServer2005ExpressEdition です。

ご回答の内容は、今の知識ではわからない部分が大きいので
色々とググってみます。
ありがとうございます。

補足日時:2009/08/20 23:16
    • good
    • 0

sp_who/sp_who2とかでもできるかと思うけど、、、


master..sysprocesses を使うほうがプログラミングしやすいかな。。。

master..sysprocesses を 自分のやりたい内容に合わせて
select して 出てきた spid を dbcc inputbuffer(spid) なんてやれば
細かい内容が取得できると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!