1. 程式人生 > >SQL Server死鎖的解除方法

SQL Server死鎖的解除方法

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 @
[email protected]
@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 @
[email protected]
@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<[email protected] begin select @spid=程序ID,@標誌=標誌 from #t where
[email protected]
insert #t1 exec('dbcc inputbuffer('[email protected]+')') if @標誌='死鎖的程序' exec('kill'[email protected]) set @[email protected]+1 end end else while @i<[email protected] begin select @s='dbcc inputbuffer('+cast(程序ID as varchar)+')' from #t where [email protected] insert #t1 exec(@s) set @[email protected]+1 end select a.*,程序的SQL語句=b.EventInfo from #t a join #t1 b on a.id=b.id end

SQL Server死鎖的查詢方法:

exec master.dbo.p_lockinfo 0,0 ---顯示死鎖的程序,不顯示正常的程序   exec master.dbo.p_lockinfo 1,0 ---殺死死鎖的程序,不顯示正常的程序 

相關推薦

SQL Server解除方法

Create proc p_lockinfo @kill_lock_spid bit=1, --是否殺掉死鎖的程序,1 殺掉, 0 僅顯示 @show_spid_if_nolock bit=1 --如果沒有死鎖的程序,是否顯示正常程序資訊,1 顯示,0 不顯示 a

sql server 排查

getdate rest spi 排它鎖 pro 版本 sql ack proxy 原文:sql server 死鎖排查 記得以前客戶在使用軟件時,有偶發出現死鎖問題,因為發生的時間不確定,不好做問題的重現,當時解決問題有點棘手了。 現總結下查看死

SQL SERVER查詢和殺死程序

關於死鎖的產生原理,想了解更多,可以點選這裡 查詢死鎖程序 select         request_session_id spid,       

sql server解決方案

問題場景:在客戶那碰到一個操作卡死的現象 問題解決: 1、如何掛鉤是死鎖問題:通過程式碼跟蹤,發現是指執行一個SQL語句超時,因此猜想可能是表鎖住了 2、如果確認是思索問題:通過SQL發現死鎖,以下是相關的SQL  select request_session_id 

SQL Server診斷--同一行資料在不同索引操作下引起的

死鎖概述 對於資料庫中出現的死鎖,通俗地解釋就是:不同Session(會話)持有一部分資源,並且同時相互排他性地申請對方持有的資源,然後雙方都得不到自己想要的資源,從而造成的一種僵持的現象。當然,在任何一種資料庫中,這種僵持的情況不會一直持續下去,因為一直持續下去雙方永遠都無法執行,沒有任何意義,在

sql server 簡易例子

產生死鎖的原因主要是:(1) 因為系統資源不足。(2) 程序執行推進的順序不合適。(3) 資源分配不當等。如果系統資源充足,程序的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,程序執行推進順序與速度不同,也可能產生死鎖。產生死鎖的四

SQL Server產生原因及解決辦法

其實所有的死鎖最深層的原因就是一個:資源競爭 表現一:   一個使用者A 訪問表A(鎖住了表A),然後又訪問表B,另一個使用者B 訪問表B(鎖住了表B),然後企圖訪問表A,這時使用者A由於使用者B已經鎖住表B,它必須等待使用者B釋放表B,才能繼續,好了他老人家就只好老老實實

SQL Server總結

CREATE Table #Who(spid int,    ecid int,    status nvarchar(50),    loginname nvarchar(50),    hostname nvarchar(50),    blk int,    dbname nvarchar(50),  

的定義 產生原因 必要條件 避免解除方法

                1.死鎖:如果一組程序中的每一個程序都在等待僅由該組程序中的其它程序才能引發的事件,那麼該組程序是

完美解除安裝SQL Server 2008 R2 的方法,適合所有問題

 最近遇到了一件煩心事,在安裝SQL Server 2008 R2總是在Analysis Services選項那裡出現錯誤,安裝了一整天也沒好,真的是按了又解除安裝,之後在按,為此我很苦惱,經過百度查詢,終於找到本文,也自己寫了也教程,在這裡提前說明一下,小編電

數據庫查詢速度慢了?是否是因為了?一種解決方法

-- 檢索 blog kill _id exe 進行 xxx 通過 --查詢哪些表被死鎖 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sy

SQL SERVER機制(一)——概述(的種類與範圍)

row 定性 針對 共享 互斥 drop 問題 停止 共享鎖 SQL SERVER的鎖機制系列: SQL SERVER的鎖機制(一)——概述(鎖的種類與範圍) SQL SERVER的鎖機制(二)——概述(鎖的兼容性與可以鎖定的資源) SQL SERVER的鎖機制(三)

跟蹤:6種跟蹤方法總結

時間 mda msd count avi filesize microsoft win int 原文地址:http://blog.csdn.net/kk185800961/article/details/42504857 方法一:Windows 性能計數器監控 命令行輸

排查程序循環,方法 ——pstack

stack read pan bash memory cli period one 同事 pstack命令可顯示每個進程的棧跟蹤,pstack $pid即可,pstack命令須由$pid進程的屬主或者root運行。 這次出現cpu占比100%的情況,但看memory占比,並

作業系統(10)程序--概念;處理方法預防、避免、銀行家演算法、檢測

文章目錄 1. 死鎖概念 2. 死鎖處理方法 1. 死鎖預防 2. 死鎖避免 3. 銀行家演算法 4. 死鎖檢測 1. 死鎖概念 死鎖是指:由於競爭資源或者通

查看Sql Server的表以及解

代碼 pan 數據庫名 數據庫 被鎖 varchar weight _id col 查看被鎖表: select spId from master..SysProcesses where db_Name(dbID) = ‘數據庫名稱‘ and spId <

SQL SERVER 事務 (3)

資料庫的髒讀、不可重複讀、幻讀都和事務的隔離性有關。所以先了解一下事務的4大特性。 事務的4大特性(ACID): 原子性(Atomicity):事務是資料庫的邏輯工作單位,它對資料庫的修改要麼全部執行,要麼全部不執行。 一致性(Consistemcy):事務前後,資料庫的

win10中開啟SQL Server配置管理器方法

使用 Windows10 訪問 SQL Server 配置管理器   因為 SQL Server 配置管理器是 Microsoft 管理控制檯程式的一個管理單元而不是單獨的程式,所以,當執行 Windows 10 時,SQL Server 配置管理器不顯示為一個應用程式。 

sql server事務 儲存過程 索引 觸發器

1.事務:保證一個多操作的事情全部完成,否則回到做之前的狀態 begin try begin tran–設定反悔點,開啟事務 delete from UserInfo where UserId>5 delete from ClassInfo commit tran–不反悔,提交事務 e

C#將圖片存放到SQL SERVER資料庫中的方法

本文例項講述了C#將圖片存放到SQL SERVER資料庫中的方法。分享給大家供大家參考。具體如下: 第一步:  //獲取當前選擇的圖片 this.pictureBox1.Image = Image.FromStream(this.openFileDialog1.OpenFil