1. 程式人生 > >sqlserver 檢視死鎖和執行程序

sqlserver 檢視死鎖和執行程序

USE [master]
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