ASP.NET Webforms 4アプリケーションでのコードビットに問題があります。 SQL Server 2008 R2、IIS 7を使用しています。このWebサイトはWindows Server 2008 R2上で別のアプリケーションプール(統合モード、.NET4、32ビットアセンブリのサポート)で動作しています。ASP.NETアプリケーションが開かれているWAYが多すぎます
次のコードは、問題を装っている:
Dim sqlCmd = New SqlClient.SqlCommand
With sqlCmd
Using sqlConnectionToUse As SqlClient.SqlConnection = GetActiveConnexion(pstrConnectString), _
vAdaptor As New SqlClient.SqlDataAdapter
.Connection = sqlConnectionToUse
.CommandText = pstrSQL 'function parameter
vAdaptor.SelectCommand = sqlCmd
'query1: SELECT somecolumn FROM table WHERE somecolumn '' ==> opens a new connection in SQL Server
'query2: SELECT someothercolumn FROM anothertable WHERE someothercolumn 23 ==> uses my WebSite process active connection
vAdaptor.Fill(vDataSet)
End Using
End With
UPDATE:私はQUERY2を実行すると、すべて、
Return New SqlClient.SqlConnection("my connection string obtained from the web.config file")
:をGetActiveConnexion()メソッドは、単に私の場合は、次のコードを実行しASP.NETアプリケーションは、アプリケーションプールのopenned接続を使用して、結果をデータセットに取得します。
しかし、私はquery1を実行するたびに、新しい接続がSQLサーバーで開かれています(SSMSのアクティビティモニターに表示されているのがわかります)。問題は、このクエリ1を100回実行すると、接続プールの上限に達し、非常に悪いことが起こることです。私はまだデータセット内の結果を取得し、それらを使用することができます。 新しい接続はvAdaptator.Fill()の呼び出しで作成されます。
何が問題なの?
ありがとうございます。 (PS:悪い英語のために申し訳ありません)ここで
は好む人のためのC#のコードです:それは使い捨てだとして
object sqlCmd = new SqlClient.SqlCommand();
using (SqlClient.SqlConnection sqlConnectionToUse = GetActiveConnexion(pstrConnectString)) {
using (SqlClient.SqlDataAdapter vAdaptor = new SqlClient.SqlDataAdapter()) {
sqlCmd.Connection = sqlConnectionToUse;
sqlCmd.CommandText = pstrSQL; //function parameter
vAdaptor.SelectCommand = sqlCmd;
//query1: SELECT F10_ID FROM FIN_MONTANT_TT_F10 WHERE F10_ID_TT_F19 = '' ==> opens a new connection in SQL Server
//query2: SELECT A48_ID FROM ADH_EPARTICIPANT_ADMIN_A48 WHERE A48_ID=23 ==> uses my WebSite process active connection
vAdaptor.Fill(vDataSet);
}
}
常に同じ接続文字列のですか?私が 'GetActiveConnexion()'のロジックを見る必要があると思います - 明示的に開いている/開いているかどうかを確認する必要があると思っていますか? –
私は 'GetActiveConnexion使用する接続を閉じますか? – Widor
接続プーリングは、まったく同じ接続文字列によって異なります。 pstrConnectString変数をquery1の点でチェックしましたか? query1を実行したときの正確なpstrConnectStringは何ですか? –