获取DataReader
SqlDataReader dr = null;
SqlConnection con = SQLServerHelper.GetCon();
try
{
con.Open();
SqlCommand com = new SqlCommand(sql, con);
dr = com.ExecuteReader(CommandBehavior.CloseConnection);
}
catch
{
return null;
}
关闭:dr.Dispose();dr.Close();
为什么通过这样的释放并关闭后,查询master数据库:
EXEC sp_lock;
select spid,cmd,cpu,physical_io,memusage,
(select top 1 [text] from ::fn_get_sql(sql_handle)) sql_text
from master..sysprocesses order by cpu desc,physical_io desc;该连接状态:EXEC sp_lock 结果:
-----------------------------------------------
54 1 1115151018 0 TAB IS GRANT
55 5 0 0 DB S GRANT
56 5 0 0 DB S GRANT
57 5 0 0 DB S GRANT-----------------------------------------------后面一个sql的结果:
55 AWAITING COMMAND 0 2 2 INSERT INTO [ECMS].[dbo].[CustomerLog]([operatorName],
[CUSTOMERID],[handletims],[handeltype]) ........53 AWAITING COMMAND 0 1 2 select CHARGEITEMID FROM POLY where chargeItemID=1
56 AWAITING COMMAND 0 0 2 select CHARGEITEMID FROM POLY where chargeItemID=52
57 AWAITING COMMAND 0 0 2 select CHARGEITEMID FROM POLY where chargeItemID=56为什么这个连接的状态仍然为Awaiting Command而并没有释放呢?数据库已经更改远程登录超时时间为20s;如果连续操作的话数据库就会无响应,请问如果立即关闭这个连接???谢谢各位!!!
SqlDataReader dr = null;
SqlConnection con = SQLServerHelper.GetCon();
try
{
con.Open();
SqlCommand com = new SqlCommand(sql, con);
dr = com.ExecuteReader(CommandBehavior.CloseConnection);
}
catch
{
return null;
}
关闭:dr.Dispose();dr.Close();
为什么通过这样的释放并关闭后,查询master数据库:
EXEC sp_lock;
select spid,cmd,cpu,physical_io,memusage,
(select top 1 [text] from ::fn_get_sql(sql_handle)) sql_text
from master..sysprocesses order by cpu desc,physical_io desc;该连接状态:EXEC sp_lock 结果:
-----------------------------------------------
54 1 1115151018 0 TAB IS GRANT
55 5 0 0 DB S GRANT
56 5 0 0 DB S GRANT
57 5 0 0 DB S GRANT-----------------------------------------------后面一个sql的结果:
55 AWAITING COMMAND 0 2 2 INSERT INTO [ECMS].[dbo].[CustomerLog]([operatorName],
[CUSTOMERID],[handletims],[handeltype]) ........53 AWAITING COMMAND 0 1 2 select CHARGEITEMID FROM POLY where chargeItemID=1
56 AWAITING COMMAND 0 0 2 select CHARGEITEMID FROM POLY where chargeItemID=52
57 AWAITING COMMAND 0 0 2 select CHARGEITEMID FROM POLY where chargeItemID=56为什么这个连接的状态仍然为Awaiting Command而并没有释放呢?数据库已经更改远程登录超时时间为20s;如果连续操作的话数据库就会无响应,请问如果立即关闭这个连接???谢谢各位!!!
把默认使用的数据库连接池关闭,连接被close时,其实是放入了连接池内,下一次打开不会造成性能上的损耗,因为每一个连接,都有一个InnerConnection,存储的是与数据库的物理连接,close方法调用时,启用了连接池,这个内部连接时不会被关闭的。
-----------------------------------------------
54 1 1115151018 0 TAB IS GRANT
55 5 0 0 DB S GRANT
56 5 0 0 DB S GRANT
57 5 0 0 DB S GRANT-----------------------------------------------
这个锁又怎么解释呢?