メソッドを考えると:
internal static DataSet SelectDataSet(String commandText, DataBaseEnum dataBase)
{
var dataset = new DataSet();
SqlConnection sqlc = dataBase == DataBaseEnum.ZipCodeDb
? new SqlConnection(ConfigurationManager.AppSettings["ZipcodeDB"])
: new SqlConnection(ConfigurationManager.AppSettings["WeatherDB"]);
SqlCommand sqlcmd = sqlc.CreateCommand();
sqlcmd.CommandText = commandText;
var adapter = new SqlDataAdapter(sqlcmd.CommandText, sqlc);
adapter.Fill(dataset);
return dataset;
}
呼び出し元のメソッドがスコープ外になった後、または sqlc に参照がなくなった後、sqlc (SqlConnection) が破棄/クローズされないのはなぜですか?
EDIT 1: 使用してラップしても、使用して接続を確認できます(接続プールをオフにしています):
SELECT DB_NAME(dbid) as 'Database Name',
COUNT(dbid) as 'Total Connections'
FROM sys.sysprocesses WITH (nolock)
WHERE dbid > 0
GROUP BY dbid
EDIT 2: here から得た助けを借りて、さらにデバッグを行ってください-答えは、誰かがプールで接続文字列をハードコーディングしたことでした。助けてくれてありがとう - できれば、すべての回答を回答としてマークします。