DOBON.NET DOBON.NETプログラミング掲示板過去ログ

SqlClient.SqlConnectionの開放

分類:[.NET]

"SqlClient.SqlConnection"のOPENメソッドでSQLデータベースに接続後、Closeメソッドで閉じてもアプリケーションを終了しないとデータベースが完全に開放されない様で困っています。

"SqlClient.SqlConnection"をClose後"Restore database"文を実行できませんでした。データベースを完全に開放する方法はあるのでしょうか?
■No1221に返信(opqlさんの記事)
> "SqlClient.SqlConnection"のOPENメソッドでSQLデータベースに接続後、Closeメソッドで閉じてもアプリケーションを終了しないとデータベースが完全に開放されない様で困っています。
>
> "SqlClient.SqlConnection"をClose後"Restore database"文を実行できませんでした。データベースを完全に開放する方法はあるのでしょうか?

fukuです。
Closeメソッドの後にDisposeメソッドを実行して変数にNothingを投入する
方法はどうでしょうか?
また、完全に開放されないと困る要因は何ですか? 興味がありますので
是非教えてください。
Closeメソッドの後にDisposeメソッドを実行して変数にNothingしても駄目でした。

MSDE用GUIを作ろうと思っています。
完全にデータベースの開放が行われないと、Backupはできるのですが、Restoreができませんでした。
■No1223に返信(opqlさんの記事)
> Closeメソッドの後にDisposeメソッドを実行して変数にNothingしても駄目でした。
>
> MSDE用GUIを作ろうと思っています。
> 完全にデータベースの開放が行われないと、Backupはできるのですが、Restoreができませんでした。

fukuです。
「接続プール」がくさいと思いいろいろ調べましたところ
「接続プールは一度作成されるとアクティブなプロセスが終了するまで破棄されません。アクティブでないプールまたは空のプールを維持するためには、最小限のシステム オーバーヘッドが発生します。」とありましたので、確かにアプリケーシ
ョンを終了しないと解放されないのかも知れませんね。

自分がVB+ADO+SQLDMOで以前、BackUpとRestoreを作った時も同じ問題が出て
SHELLで別の実行ファイル(BackUp、Restore専用)を起動し、自身は終了し、
実行ファイル(BackUp、Restore専用)でループでRetry処理を入れ対策した
ことがあります。 もっとスマートな方法があれば自分も教えて欲しいですよ。

以上です。

DOBON.NET | プログラミング道 | プログラミング掲示板