「接続リーク」を示すいくつかのエラーが表示されます。つまり、接続が適切に閉じられておらず、プールが不足しています。では、これをインストルメント化して、特定の時間に開いている正確な数を確認するにはどうすればよいでしょうか?
7 に答える
マスターテーブルのsp_who2ストアドプロシージャは、データベース側からこれに適しています。データベースへの接続が表示されます。より多くのデータを探している場合は、プロファイリングも試してください。
すべての接続が作成され、開かれ、閉じられるサービスを実装します。そこにカウンターを持ってください。接続が開かれたり閉じられたりするたびに、ロギングフレームワークでログを記録します。
プロファイラーツールを使用して、既存の接続と開閉接続をすべてトレースできます
エンタープライズマネージャーからプロファイラーを開くことができます
SQL 2000を使用している場合は、SQL 2000EnterpriseManagerでチェックインできます。
[現在のアクティビティ]ウィンドウを表示するにはSQLServerEnterprise Managerで、サーバーグループを展開してから、サーバーを展開します。[管理]を展開し、[現在のアクティビティ]を展開します。[プロセス情報]をクリックします。
現在のサーバーアクティビティが詳細ペインに表示されます。
(http://technet.microsoft.com/en-us/library/cc738560.aspx)
(Google検索から:SQL 2000の現在のアクティビティ)
SQL Server ManagementStudioまたはQueryAnalyzerでsp_who2を実行して、現在のすべての接続を確認できます。それがSQLServerです。使用しているRDBMSがわかりません。
また、コードを調べて、接続が不要になったらすぐに接続を閉じるようにしてください。これについて肛門になりなさい!
「using」ステートメントを使用して、接続が常に閉じられていることを確認し、この問題が二度と発生しないようにします。
using(SqlConnection connection = new SqlConnection())
{
...
} // connection is always disposed (i.e. closed) here, even if an exception is thrown