您可能想阅读连接池:http: //msdn.microsoft.com/en-us/library/8xx3tyca.aspx
为每个不同的连接字符串创建一个单独的连接池。此外,如果您通过集成安全进行连接,并且您的网站使用基本或 Windows 身份验证(而不是匿名),则将为网站的每个用户创建一个单独的连接池。
为了清除连接池,该SqlConnection
对象提供了方法ClearPool()
和 ClearAllPool()`。但是,在关闭或处置之前,不会关闭单个连接并将其从池中删除。
执行 sql 查询所涉及的所有各种对象IDisposable
都应包装在一条using
语句中,以保证正确处理。这些方面的东西:
IEnumerable<BusinessObject> list = new List<BusinessObject>() ;
using ( SqlConnection connection = new SqlConnection( credentials ) )
using ( SqlCommand command = connection.CreateCommand() )
using ( SqlDataAdapter adapter = new SqlDataAdapter( command ) )
using ( DataSet results = new DataSet() )
{
command.CommandType = CommandType.StoredProcedure ;
command.CommandText = @"someStoredProcedure" ;
try
{
connection.Open() ;
adapter.Fill( results ) ;
connection.Close() ;
list = TransformResults( results ) ;
}
catch
{
command.Cancel() ;
throw
}
}
return list ;
您可以通过执行存储过程sp_who
(必须在 SQL Server 中具有适当的管理员权限)来检查在 Sql Server 中打开了哪些 SPID。您也可以使用 perfmon。