另外作为测试,你可以先在纯SQL Server环境下执行删除操作,如果很快,那有可能就是前端程序的问题或者网络、驱动等问题

解决方案 »

  1.   

    与.net 没什么关系, 你应该用日志把失败时的SQL语句及参数及值记录下来
    很可能是因为删除的条件比较复杂导致的
    你把删除的条件, 用 select 直接执行一下看一下, 看有没有什么可以优化的地方, 或者贴出来给大家看看
      

  2.   


    问下 这种情况 能调超时时间吗
    我们也有个一个库,库里面有个表,业务比较多,各种调用 插入,读取等等。
    所以我们ERP 有个界面就是查询这个表的老是提示连接超时。这个能把时间调长点吗?
      

  3.   

    程序的 Connection 对象 ConnectionTimeout 属性默认 15 秒,可以按需要改大点。
      

  4.   

    是纯粹删除日志表超过某段时间的日志数据,如"delete Log where [datetime] < '2014-04-13 09:56:15'"
    没有复杂的判断,该语句每天只执行一次,其中没有用到事务,放到sql查询分析器里面执行大概1分钟左右。
      

  5.   


    这个是指连接超时,不是操作超时.
    操作改 Command 对象的 CommandTimeout 属性
      

  6.   

    建议把删除语句写到存储过程中吧,另外在存储过程中删除完毕后对表重建索引,然后每次.net编程中调用存储过程
      

  7.   

    估计是删除log表时其他连接同时在插入记录吧。
    尽量把这个删除任务放在晚上没有业务的时段执行。
    [datetime]字段要建索引。
    所有插入log表的地方要么不要用事务、直接插入,要么插入日志是事务的最后一个语句。尽量减少log表的锁。
      

  8.   

    有没有业务功能在记日志的时候使用事务呢?
    如果有,如同#13
    像这种会被很多地方操作的表尽量不要用事务~~如果没有, SQLSERVER好像也确实存在这样的问题,删除过多数据就会出问题, 最后, 如果你要的数据不多的话, 你可以先备份要的数据, 然后 TRUNCATE TABLE 表名, 这个删数据神速
    然后,再把备份的数据重新插进来, 这样虽然麻烦, 但就算有一万行是要的数据速度应该还是比较高的~