我有一个基于ASP.net的应用程序。
SQL Server框上的CPU始终为~90 - 100%
我正在处理很多不合适的查询,但是,查看前一个编码器的代码,他似乎从未关闭(或处置)SqlConnection
当我运行以下查询时,我得到了大约450个“正在等待命令”的连接
SELECT Count(*)FROM MASTER.DBO.SYSPROCESSES WHERE DB_NAME(DBID)='CroCMS'和DBID!= 0 AND cmd ='AWAITING COMMAND'
这可能会导致问题吗?
我读过这篇文章似乎与此有关: http://www.pythian.com/news/1270/sql-server-understanding-and-controlling-connection-pooling-fragmentation/
我们也会获得大量超时,特别是在启用复制时。 我不确定这是否相关..暂时禁用复制(事务性),似乎没问题。 (此服务器是我们办公室数据库服务器的订户)
是否会处理SQL连接对象帮助?
答案 0 :(得分:2)
是的,处理它们。否则暂时忽略它们。可能这个池很大,因为语句很慢。我会更建议:
如果在优化SQL后问题没有改善 - 您可以重新访问池。
答案 1 :(得分:1)
完成后,应始终处置命令对象。这样可以更好地使用连接池。
easist是使用using语句。
using (
var sqlCommand = new SqlCommand(
"storedprocname",
new SqlConnection("connectionstring"))
{ CommandType = CommandType.StoredProcedure })
{
// do what you should.. setting params executing etc etc.
}