sqlserver 檢視死鎖和執行程序
GO
/****** Object: StoredProcedure [dbo].[sp_who_run] Script Date: 02/28/2017 14:34:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_who_run]
AS
BEGIN
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT [Spid] = session_Id
, ecid
, [Database] = DB_NAME(sp.dbid)
, [User] = nt_username
, [Status] = er.status
, [Wait] = wait_type
, [Individual Query] = SUBSTRING (qt.text,
er.statement_start_offset/2,
(CASE WHEN er.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE er.statement_end_offset END -
er.statement_start_offset)/2)
,[Parent Query] = qt.text
, Program = program_name
, Hostname
, nt_domain
, start_time
,logical_reads
FROM sys.dm_exec_requests er
INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt
WHERE session_Id > 50 -- Ignore system spids.
AND session_Id NOT IN (@@SPID) -- Ignore this current statement.
ORDER BY start_time
END
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
USE [master]
GO
/****** Object: StoredProcedure [dbo].[sp_who_lock] Script Date: 02/28/2017 14:19:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[sp_who_lock]
as
begin
declare @spid int,@bl int,
@intTransactionCountOnEntry int,
@intRowcount int,
@intCountProperties int,
@intCounter int
create table #tmp_lock_who (
id int identity(1,1),
spid smallint,
bl smallint)
IF @@ERROR<>0 RETURN @@ERROR
insert into #tmp_lock_who(spid,bl) select 0 ,blocked
from (select * from sysprocesses where blocked>0 ) a
where not exists(select * from (select * from sysprocesses where blocked>0 ) b
where a.blocked=spid)
union select spid,blocked from sysprocesses where blocked>0
IF @@ERROR<>0 RETURN @@ERROR
-- 找到臨時表的記錄數
select @intCountProperties = Count(*),@intCounter = 1
from #tmp_lock_who
IF @@ERROR<>0 RETURN @@ERROR
if @intCountProperties=0
select '現在沒有阻塞和死鎖資訊' as message
-- 迴圈開始
while @intCounter <= @intCountProperties
begin
-- 取第一條記錄
select @spid = spid,@bl = bl
from #tmp_lock_who where Id = @intCounter
begin
if @spid =0
select '引起資料庫死鎖的是: '+ CAST(@bl AS VARCHAR(10)) + '程序號,其執行的SQL語法如下'
else
select '程序號SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '程序號SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其當前程序執行的SQL語法如下'
DBCC INPUTBUFFER (@bl )
end
-- 迴圈指標下移
set @intCounter = @intCounter + 1
end
drop table #tmp_lock_who
return 0
end
相關推薦
sqlserver 檢視死鎖和執行程序
USE [master] GO /****** Object: StoredProcedure [dbo].[sp_who_run] Script Date: 02/28/2017 14:34:42 ******/ SET ANSI_NULLS ON GO SET
mysql檢視死鎖和解除鎖
解除正在死鎖的狀態有兩種方法: 第一種: 1.查詢是否鎖表 show OPEN TABLES where In_use > 0; 2.查詢程序(如果您有SUPER許可權,您可以看到所有執行緒。否則,您只能看到您自己的執行緒) show processlist
java 多執行緒 死鎖和valitile關鍵字
死鎖 兩個或者多個執行緒都在等待對方釋放鎖,在寫多執行緒程式碼時要注意避免這種死鎖的發生 發生死鎖後可以在dos命令列輸入jps命令檢視java程序狀況 可以試用jstack -l 程序號 命令檢視當前類的問題 關閉jvm停止死鎖 以上節
作業系統-程序(7)死鎖和銀行家演算法
允許多個程序併發執行共享系統資源時,系統必須提供同步機制和程序通訊機制。然而,對這種機制使用不當的話,可能會出現程序永遠被阻塞的現象。例如,兩個程序分別等待對方佔有的一個資源,於是兩者都不能執行而處於永遠等待,這種現象稱為死鎖。 死鎖產生的四個必要條件: 互斥條件: 程序應互斥使用資源,任一時刻一個資源僅
SqlServer 檢視被鎖的表和解除被鎖的表
檢視被鎖的表 1 2 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm
java學習第十二天之多執行緒死鎖和併發
package MoreThreadLearn; /* 兩個儲戶到銀行存錢,每個人存了三次,一次100元 1、描述銀行 2、描述儲戶業務 分析多執行緒是否存在安全隱患? 1、執行緒任務中是否有共享的資料 2、是否多條操作共享資料的程式碼 */ public
python多執行緒程式設計(4): 死鎖和可重入鎖
線上程間共享多個資源的時候,如果兩個執行緒分別佔有一部分資源並且同時等待對方的資源,就會造成死鎖。儘管死鎖很少發生,但一旦發生就會造成應用的停止響應。下面看一個死鎖的例子: # encoding: UTF-8import threadingimport timec
第六章—併發性:死鎖和飢餓【計算機作業系統】
6.1 給出可重用資源和可消費資源的例子。 可重用資源:處理器,I/O通道,主存和輔存,裝置以及諸如檔案,資料庫和訊號量之類的資料結構。 可消費資源:中斷,訊號,訊息和I/O緩衝區中的資訊。 6.2 可能發生死鎖所必須的三個條件是什麼? 互斥,佔有且等待,非搶佔。 6.
【Java TCP/IP Socket程式設計】----深入剖析----TCP資料傳輸中的死鎖和效能
目錄 死鎖問題 資料傳輸效能 案例 --------筆記來自於書籍《Java TCP/IP Socket程式設計》 死鎖問題 在TCP資料傳輸底層實現中(詳細參見https://blog.csdn.net/lili13897741554/article/
多執行緒之同步鎖 加鎖和執行緒停止
一.同步程式碼塊(同步鎖) 寫法: synchronized(鎖){ 上鎖的程式碼 } 當執行緒進入同步程式碼塊 會把鎖拿走 執行程式碼塊中的程式碼 程式碼執行完畢後 會把鎖還回去 如果執行緒遇到同步程式碼塊 發現沒有鎖 將進入等待(有鎖才可進) 鎖的注意:保證所有執行緒使用的是同一個鎖
關於死鎖和活鎖的形象描述
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
使用Thread Dump診斷死鎖和效能瓶頸問題
場景:Java程式在執行的過程中出現了死鎖或者執行的很慢,檢視日誌也沒發現什麼Exception,該如何解決呢? 一段死鎖程式: public class DeadLock { public static Object lockA = new Obj
db2 避免死鎖和鎖等待
資料庫中之所以會存在死鎖或者鎖等待,是因為某一事務執行時間過長,導致鎖沒有及時釋放,那麼我們的解決辦法就是,事務過程儘量要短,並且事務中的sql執行要快,這樣才不會有過多的鎖等待。還有一個原因,就是一些執行糟糕的sql,比如走了全表掃描,那麼它會佔據表中大量的鎖,導致鎖住了其他行,
SQLServer 檢視SQL語句的執行時間
在MSSQL Server中通過檢視SQL語句執行所用的時間,來衡量SQL語句的效能。 通過設定STATISTICS我們可以檢視執行SQL時的系統情況。選項有PROFILE,IO ,TIME。介紹如下: SET STATISTICS PROFILE ON:顯示分析、編譯和執行查
SQLServer查詢死鎖
--查詢死鎖 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks w
Edusoho如何檢視錯誤日誌和執行日誌?
ubuntu系統下: 1.nginx錯誤日誌地址: 預設是在/var/log/nginx/目錄下, 每個人的配置不一樣,如果不在上述目錄,則需要根據自己nginx的配置檔案來定位錯誤日誌的位置,nginx配置檔案地址:/etc/nginx/sites-enabl
java如何檢視死鎖
首先我們先寫一個死鎖程式 public class DeadLock { public static void main(String[] args) { new Thread(new Runnable() { @Overri
執行緒的死鎖與執行緒的通訊
產生背景 不同執行緒分別佔用對方需要的同步資源部放棄,都在等待對方放棄自己需要的同步資源,形成了執行緒的死鎖 解決方法 專門的演算法,原則 儘量減少同步資源的定義 案例 package com.zyd.thread; public class TestDeadLoc
跟我學程式碼架構設計模式之--鎖和執行緒
上篇講到鎖可以用來解決多執行緒同時訪問同一資源時的同步問題,即鎖可以控制多執行緒對函式關聯資源的的同步訪問。這一篇我來簡單分析下鎖如何解決同步問題的。 在講鎖之前,我們我們先來討論下wait和notify方法,這兩個方法是用來控制執行緒執行的。說白了就是控制執行緒狀態的流轉,wait控制執行
GIL鎖和執行緒鎖
GIL鎖(Global Interpreter Lock):CPython才會有(是這種直譯器的歷史遺留問題),Python程式執行前,先獲得GIL鎖,然後每執行100個指令,直譯器就自動釋放GIL鎖,讓別的執行緒執行。所以,多執行緒在Python中只能交替執行,同一時間只有一個執行緒在執行。 Python