@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

SQLServerのデータベース削除について

1
投稿者投稿内容
HIRO
常連さん
会議室デビュー日: 2004/10/28
投稿数: 41
投稿日時: 2006-03-29 12:08
SQLServerのデータベースの内容を確認し、データベースを削除するプログラムを作成しています。
その際、データベースの内容を確認するために、SQLConnectionにてOpenし確認後、Close→Disposeをおこなっているのですが、SQLServerのプロセス情報では状態がSloopingのままのこってしまい、データベース使用中のため削除できない状態です。

ちなみに、そのプログラムを終了させるとプロセス情報から消えデータベースは削除できる状態になるのですが、同じプログラム内で確認→削除を行いたいでのSQLConnectionをClose→Dispose後SQLServerのプロセス情報からSleepingの状態を消すことはできないでしょうか?

わかられる方ご教授願います。

WindowsXP Pro SP2
SQLserver2000 SP3
VB.NET2003 FW1.1 SP1
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-29 12:37
引用:

HIROさんの書き込み (2006-03-29 12:08) より:

SQLServerのデータベースの内容を確認し、データベースを削除するプログラムを作成しています。
その際、データベースの内容を確認するために、SQLConnectionにてOpenし確認後、Close→Disposeをおこなっているのですが、SQLServerのプロセス情報では状態がSloopingのままのこってしまい、データベース使用中のため削除できない状態です。

ちなみに、そのプログラムを終了させるとプロセス情報から消えデータベースは削除できる状態になるのですが、同じプログラム内で確認→削除を行いたいでのSQLConnectionをClose→Dispose後SQLServerのプロセス情報からSleepingの状態を消すことはできないでしょうか?

わかられる方ご教授願います。


すみません、色んなパターンで読み取れる文章です。

「その際」が "どの際" なのかがわかりませんでした。
表題にある「データベース削除」を試みて "その際" なのでしょうか?
それとも、"その際の間際の処理" は別の処理を指すのでしょうか?

というのも、後の方でも「削除できない状態」とあるので、
どちらで削除しようとしているのかがわからないのです。
途中でインスタンスの破棄の話題もありますし、先に何かの作業をした後とも読み取れるわけです。

説明が面倒であれば、ミニマム コードを [code] を使用して貼り付けてください。
多分、その方が読解できます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-03-29 12:42
こんにちは。

Sleeping 状態のプロセスが残る原因は Connection Pooling 機能だと思います。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpguide/html/cpconconnectionpoolingforsqlservernetdataprovider.asp

Pooling キーワードを false に設定すれば接続の Close 時にログアウトされます。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-03-29 12:43
ConnectionをCloseしてもコネクションプーリングが有効のため、実際には切断されません。
接続文字列で、
Pooling=False;
を指定して、コネクションプーリングを無効にするとどうなりますか?
HIRO
常連さん
会議室デビュー日: 2004/10/28
投稿数: 41
投稿日時: 2006-03-29 13:38
じゃんぬねっとさん、ueさん、burton999さん返答有難うございます。

じゃんぬねっとさん
引用:

「その際」が "どの際" なのかがわかりませんでした。



わかりにくくてすみませんでした。
「その際」はデータベースの削除を試みたときに、削除前に接続した情報がSQLserver上にSleeping状態となって残っているために削除できないということです。

接続文字列で、Pooling=False;を指定することで解決しました。
有難うございました。



[ メッセージ編集済み 編集者: HIRO 編集日時 2006-03-29 13:49 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-29 13:47
引用:

HIROさんの書き込み (2006-03-29 13:38) より:

わかりにくくにてすみませんでした。
「その際」はデータベースの削除を試みたときに、削除前に接続した情報がSQLserver上にSleeping状態となって残っているために削除できないということです。

SQLconnectionにてOpne→Close→Disposeを行った後に同じプログラム内で同じデータベースに対して削除を行うときにSQLServer上にSleeping状態と残ってしまうためにデータベースの削除ができないということです。


丁寧にありがとうございます、理解できました。

どうも着眼点を誤ったようです。
Sleeping に着眼すべきだったようですね...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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