日期:2014-05-18  浏览次数:20386 次

SQL超时问题,十万火急,高分求助!!!!!!!!
我在做DataSet绑定的时候出现超时错误。
代码SQLHelper
using (SqlConnection conn = new SqlConnection(CONN_STRING_NON_DTC))
  {
  PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  SqlDataAdapter da = new SqlDataAdapter(cmd);
  da.Fill(ds); // 这一句超时了。。。
  cmd.Parameters.Clear();
  return ds;
  } 
sql语句如下
  select convert(varchar,purchase_date,111) as purchase_date, convert(varchar,register_date,111) as register_date,id /省略/ from ownership where login = @login

附注
  我在我机器上可以正常的运行,但是放到服务器上就有超时错误。
  我点击一次按钮,上面的代码先后运行2次。但SQL语句不一样。第一次运行没有问题,第二次却超时了,是什么原因啊。为什么第一次不超时,第二次超了,且为什么我机器上没事,服务器上超了。

十万火急。。。。

------解决方案--------------------
为什么会执行2次,把你cmd的TimeOut属性设大点,默认是15秒
------解决方案--------------------
检查一下
debug跟踪一下就知道了
------解决方案--------------------
using (SqlConnection conn = new SqlConnection(CONN_STRING_NON_DTC)) 

PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms); 
SqlDataAdapter da = new SqlDataAdapter(cmd); 
da.Fill(ds); // 这一句超时了。。。 
cmd.Parameters.Clear(); 
}
return ds; 
ds应该在连接关闭后在返回,你用的是ds在using括号里连接关闭不了,当然超时!!
------解决方案--------------------
是不是数据库锁死了啊?
试试
select convert(varchar,birthdate,111) as birthdate,* from customer with (nolock) where login = @login
------解决方案--------------------
是不是数据的问题?
fill一两条数据跟踪试试