2011-09-12 19 views
1

私は、WindowsサービスのwebmatrixのDatabaseクラスを使用しています。 (そして、Winフォームでのデバッグは、同じエラーが発生する)WebMatrix.Data.Database.Openで作成した接続を閉じるには?

私は(しばらく実行した後に)受信エラーがある:

タイムアウトが発生しました。プールから 接続を取得する前にタイムアウト時間が経過しました。すべてのプールされた 接続が使用されていて、最大プールサイズに達したため、これが発生した可能性があります。

これは、usingステートメントを使用してすべての接続が閉じていることを確認することで解決します。 (as described in this good answer)しかし、私は最近、WebMatrixデータベースクラスも使用し始めました。そして、私が開いている接続を閉じるようには見えません。

質問:WebMatrixからデータベースクラスで作成された接続を閉じるにはどうすればいいですか?

Public Shared Function GetProperty(pid As Integer, propertyName As String) As String 
    Dim db = Database.Open("SSEConnectionString") 
    Dim item = db.QuerySingle("select PropertyValue from eConfiguration where [email protected] and [email protected]", pid, propertyName) 
    Dim retVal = item.PropertyValue 
    db.Connection.Close() 
    db.Close() 
    Return retVal 
End Function 

を、私はこのコードを実行するたびに、私は私のsys.sysprocessesテーブルに新しいエントリを取得する(と私は、これは新しいことを示すされ、考え出したものから:このコードを使用して

<add name="SSEConnectionString" connectionString="Data 
:接続が

マイたconnectionStringはこのようになります)が作成され、維持されます

ソース= 123.45.67.890;初期カタログ= SSE;ユーザー ID = +++;パスワード= +++;接続タイムアウト= 5;アプリケーション名= SSE_Service " providerName =" System.Data.SqlClient "/>

私は間違っていると思いますか?

編集:Arghhhhh ....私は、エラーを引き起こしていたものを見つけ - そしてそれは自分自身にのみ関連します:任意の助け

EDIT2ためAsked a second question regarding the sysprocesses table - unsure if it helps in debugging

感謝。私は接続を閉じるのを忘れました。 :-(

Larsi

+0

これは多分WebMatrixのとは関係ありません - 私は、エラーの原因を把握する際の標準的な騒ぎに変更し、同じbeaviorを見るには、質問を更新します – Larsi

+0

誰も私がこれに責任を負うことはありません - 単にdb.closeに忘れてしまった私のスパゲティ – Larsi

答えて

0

用途:

db.Connection.Close() 
db.Close() 
関連する問題