<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    blog.Toby

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      130 隨筆 :: 2 文章 :: 150 評論 :: 0 Trackbacks
    use   master   --必須在master數據庫中創建  
      go  
       
      if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_lockinfo]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)  
      drop   procedure   [dbo].[p_lockinfo]  
      GO  
       
      /*--處理死鎖  
       
        查看當前進程,或死鎖進程,并能自動殺掉死進程  
       
        因為是針對死的,所以如果有死鎖進程,只能查看死鎖進程  
        當然,你可以通過參數控制,不管有沒有死鎖,都只查看死鎖進程  
       
        感謝:   caiyunxia,jiangopen   兩位提供的參考信息  
       
      --鄒建   2004.4--*/  
       
      /*--調用示例  
       
        exec   p_lockinfo  
      --*/  
      create   proc   p_lockinfo  
      @kill_lock_spid   bit=1,     --是否殺掉死鎖的進程,1   殺掉,   0   僅顯示  
      @show_spid_if_nolock   bit=1   --如果沒有死鎖的進程,是否顯示正常進程信息,1   顯示,0   不顯示  
      as  
      declare   @count   int,@s   nvarchar(1000),@i   int  
      select   id=identity(int,1,1),標志,  
        進程ID=spid,線程ID=kpid,塊進程ID=blocked,數據庫ID=dbid,  
        數據庫名=db_name(dbid),用戶ID=uid,用戶名=loginame,累計CPU時間=cpu,  
        登陸時間=login_time,打開事務數=open_tran,   進程狀態=status,  
        工作站名=hostname,應用程序名=program_name,工作站進程ID=hostprocess,  
        域名=nt_domain,網卡地址=net_address  
      into   #t   from(  
        select   標志='死鎖的進程',  
          spid,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,  
          status,hostname,program_name,hostprocess,nt_domain,net_address,  
          s1=a.spid,s2=0  
        from   master..sysprocesses   a   join   (  
          select   blocked   from   master..sysprocesses   group   by   blocked  
          )b   on   a.spid=b.blocked   where   a.blocked=0  
        union   all  
        select   '|_犧牲品_>',  
          spid,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,  
          status,hostname,program_name,hostprocess,nt_domain,net_address,  
          s1=blocked,s2=1  
        from   master..sysprocesses   a   where   blocked<>0  
      )a   order   by   s1,s2  
       
      select   @count=@@rowcount,@i=1  
       
      if   @count=0   and   @show_spid_if_nolock=1  
      begin  
        insert   #t  
        select   標志='正常的進程',  
          spid,kpid,blocked,dbid,db_name(dbid),uid,loginame,cpu,login_time,  
          open_tran,status,hostname,program_name,hostprocess,nt_domain,net_address  
        from   master..sysprocesses  
        set   @count=@@rowcount  
      end  
       
      if   @count>0  
      begin  
        create   table   #t1(id   int   identity(1,1),a   nvarchar(30),b   Int,EventInfo   nvarchar(255))  
        if   @kill_lock_spid=1  
        begin  
          declare   @spid   varchar(10),@標志   varchar(10)  
          while   @i<=@count  
          begin  
            select   @spid=進程ID,@標志=標志   from   #t   where   id=@i  
            insert   #t1   exec('dbcc   inputbuffer('+@spid+')')  
            if   @標志='死鎖的進程'   exec('kill   '+@spid)  
            set   @i=@i+1  
          end  
        end  
        else  
          while   @i<=@count  
          begin  
            select   @s='dbcc   inputbuffer('+cast(進程ID   as   varchar)+')'   from   #t   where   id=@i  
            insert   #t1   exec(@s)  
            set   @i=@i+1  
          end  
        select   a.*,進程的SQL語句=b.EventInfo  
        from   #t   a   join   #t1   b   on   a.id=b.id  
      end  
      go 


    -------------------------------------------------------------
    --查看死鎖進程:  
      select   標志,  
        進程ID=spid,線程ID=kpid,塊進程ID=blocked,數據庫ID=dbid,  
        數據庫名=db_name(dbid),用戶ID=uid,用戶名=loginame,累計CPU時間=cpu,  
        登陸時間=login_time,打開事務數=open_tran,   進程狀態=status,  
        工作站名=hostname,應用程序名=program_name,工作站進程ID=hostprocess,  
        域名=nt_domain,網卡地址=net_address  
        from(  
        select   標志='死鎖的進程',  
          spid,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,  
          status,hostname,program_name,hostprocess,nt_domain,net_address,  
          s1=a.spid,s2=0  
        from   master..sysprocesses   a   join   (  
          select   blocked   from   master..sysprocesses   group   by   blocked  
          )b   on   a.spid=b.blocked   where   a.blocked=0  
        union   all  
        select   '|_犧牲品_>',  
          spid,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,  
          status,hostname,program_name,hostprocess,nt_domain,net_address,  
          s1=blocked,s2=1  
        from   master..sysprocesses   a   where   blocked<>0  
      )a   order   by   s1,s2
    posted on 2009-02-14 11:26 渠上月 閱讀(2718) 評論(0)  編輯  收藏 所屬分類: sql (sqlServer)
    主站蜘蛛池模板: 亚洲AV日韩AV永久无码免下载| 国产高清免费在线| 久久亚洲成a人片| 精品久久久久久无码免费| 亚洲精品成人a在线观看| 国产精品国产亚洲区艳妇糸列短篇| 97视频热人人精品免费| 2020久久精品亚洲热综合一本| 男女免费观看在线爽爽爽视频 | 久久精品国产精品亚洲人人| 猫咪免费人成在线网站| 亚洲男人在线无码视频| 一级一看免费完整版毛片| 中文字幕无码精品亚洲资源网| 久久er国产精品免费观看8| 久久亚洲免费视频| 亚洲成人免费在线观看| 中文字幕亚洲码在线| 国产精品免费综合一区视频| 日韩电影免费在线观看网址| 在线观看午夜亚洲一区| 成全视频高清免费观看电视剧 | 成年女人男人免费视频播放| 亚洲av成人片在线观看| 亚洲性久久久影院| 99国产精品免费视频观看| 亚洲AV无码成人专区| 免费国产在线观看老王影院| 成人A片产无码免费视频在线观看| 亚洲系列国产精品制服丝袜第| AV免费网址在线观看| 欧亚一级毛片免费看| 亚洲福利视频一区| 最近免费中文字幕视频高清在线看| 免费高清A级毛片在线播放| 亚洲AV天天做在线观看| 免费网站看v片在线香蕉| 日韩精品无码免费专区午夜不卡| 亚洲午夜电影在线观看高清| 亚洲国产婷婷综合在线精品| 69视频免费观看l|