我如何去監視ㄧ段sql查詢執行的時間過長如設定時間5秒,超時就報錯.段開數據庫連結.還有就是這種想法能不能用存儲過程來做,我想看看能不能通過存儲過程來控制他,但是如何寫一段PROCEDUR返回的是一個紀錄集,請高手指點,解決立刻結貼:)

解决方案 »

  1.   

    写存储过程不知道,我想也没有必要,这样对SQL Server服务器的压力用很大。
    可以在程序中用代码的方式来实现:
    如果监视的一条SQL语句,可以不考虑Trancation,如果是监视的多条SQL语句,就要考虑Trancation。1、在执行SQL语句之前,创建一个Timer实例。
    2、启动Timer,让它的监视时间间隔为5秒。
    3、在执行SQL语句前创建一个全局变量isEnd。
       isEnd = false;
       执行SQL语句 ... ...
       isEnd = true;
    4、在TimerCallback的代理事件中去判断isEnd的值。
       if(isEnd = false)   // 说明没有执行完
       {
           如果有Trancation就RollBack。
           断开数据连接。
       }
      

  2.   

    謝謝樓上的回答.這是一個WEB程序,不可能每段查詢都需要一個一個監控的吧.而且WEB裡面好像沒有Timer的,還有其他的解決方法,能像解決數據庫聯結那樣來解決這個問題嗎??
      

  3.   

    還有後台數據庫是ORACLE,忘說了:)
      

  4.   

    也是可以的,Timer是System.Threading.Timer类。
      

  5.   

    再次謝謝 mapserver(杨东),還有更好的解決的方法嗎???:)
      

  6.   

    我最初的想法是把查詢放在FUNTION或者PROCEDURE裡面去執行,然後想法去控制FUNTION或者PROCEDURE的執行時間,這樣能實現嗎???請高手給指點以下:)多謝了阿