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

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

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

    隨筆-200  評論-148  文章-15  trackbacks-0
    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

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    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
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

    posted on 2007-10-15 16:12 無聲 閱讀(3802) 評論(6)  編輯  收藏 所屬分類: 職場生活

    評論:
    # re: sqlserver 解除死鎖[未登錄] 2007-10-21 19:39 | aa
    非常好  回復  更多評論
      
    # re: sqlserver 解除死鎖 2007-10-23 14:23 | jlzhou
    太牛了!今天剛好遇到!謝謝!  回復  更多評論
      
    # re: sqlserver 解除死鎖[未登錄] 2007-10-23 15:52 | joy
    謝謝,太好了  回復  更多評論
      
    # re: sqlserver 解除死鎖 2008-07-18 17:23 | kill 都殺不調怎么辦
    kill 都殺不調怎么辦,不想重啟服務器,這種問題經常出現。  回復  更多評論
      
    # re: sqlserver 解除死鎖 2010-07-15 17:19 | justin18
    遇到了死鎖,可是不知道怎么解決,文章說得好像太復雜了點  回復  更多評論
      
    # re: sqlserver 解除死鎖[未登錄] 2014-11-19 16:00 | test
    強大!! 剛好用戶,急死我了。  回復  更多評論
      
    主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲尹人九九大色香蕉网站| 91大神免费观看| 亚洲偷自拍另类图片二区| 亚洲人成人无码网www国产| 毛片无码免费无码播放| 亚洲国产精品网站在线播放| 夜夜春亚洲嫩草影院| A在线观看免费网站大全| 久久不见久久见免费影院www日本 久久WWW免费人成—看片 | 国产麻豆免费观看91| 亚洲免费人成在线视频观看| 亚洲综合中文字幕无线码| 亚洲人成伊人成综合网久久久| 人成午夜免费视频在线观看| j8又粗又长又硬又爽免费视频| 亚洲人成伊人成综合网久久| 亚洲一区二区视频在线观看| 很黄很色很刺激的视频免费| a级毛片在线视频免费观看| 亚洲国产成人AV在线播放| 亚洲激情黄色小说| 亚洲色欲一区二区三区在线观看| 成全视频在线观看免费高清动漫视频下载| yellow视频免费看| 亚洲av无码一区二区三区四区| 亚洲av激情无码专区在线播放| 亚洲AⅤ视频一区二区三区| 亚洲第一成年免费网站| 日本亚洲欧洲免费天堂午夜看片女人员 | 久久综合亚洲鲁鲁五月天| 久久亚洲欧洲国产综合| 免费看www视频| 五月婷婷综合免费| 久久青草免费91线频观看站街| aa午夜免费剧场| 高潮内射免费看片| 亚洲欧洲无码一区二区三区| 亚洲人成毛片线播放| 亚洲自偷自拍另类12p| 亚洲精品高清国产一线久久|