1. 程式人生 > >SqlServer表死鎖的解決方法(轉)

SqlServer表死鎖的解決方法(轉)

前些天寫一個儲存過程,儲存過程中使用了事務,後來我把一些程式碼註釋掉來進行除錯找錯,突然發現一張表被鎖住了,原來是建立事務的程式碼忘記註釋掉。本文表鎖住了的解決方法。 其實不光是上面描述的情況會鎖住表,還有很多種場景會使表放生死鎖,解鎖其實很簡單,下面用一個示例來講解: 1 首先建立一個測試用的表:

CREATE TABLE Test
(
    TID INT IDENTITY(1,1)
)

2 執行下面的SQL語句將此表鎖住:

SELECT * FROM Test WITH (TABLOCKX)

3 通過下面的語句可以檢視當前庫中有哪些表是發生死鎖的:

SELECT request_session_id spid
,OBJECT_NAME(resource_associated_entity_id)tableName FROM sys.dm_tran_locks WHERE resource_type='OBJECT '

4 上面語句執行結果如下:

  • spid :被鎖程序ID。
  • tableName:發生死鎖的表名。

5 只需要使用kill關鍵字來殺掉被鎖的程序ID就可以對錶進行解鎖:

KILL 52

http://www.cnblogs.com/oec2003/archive/2011/08/06/2742015.html

相關推薦

SqlServer解決方法()

前些天寫一個儲存過程,儲存過程中使用了事務,後來我把一些程式碼註釋掉來進行除錯找錯,突然發現一張表被鎖住了,原來是建立事務的程式碼忘記註釋掉。本文表鎖住了的解決方法。 其實不光是上面描述的情況會鎖住表,還有很多種場景會使表放生死鎖,解鎖其實很簡單,下面用一個示例來講解: 1 首先建立一個測試用的表: CR

sqlserver2008 解決方法及效能優化方法

關於死鎖: sp_who active --看看哪個引起的死鎖, blk裡面即阻塞的spid; dbcc inputbuffer(@blk) -- 可以檢視是那個sql語句造成的死鎖; sp_lock --看看鎖住了那個資源,objid即被鎖住的資源id; select

posix訊號量sem_wait解決方法

在開發過程中,有三個獨立執行的程式模組,三個模組都對sqlite資料庫進行讀寫操作。sqlite在linux共享性較差,所以需要加入互斥訊號量解決三個模組訪問資料庫該問題。另外,在加入訊號量後,訊號

svn 新版本 clean up 解決方法

報錯描述           在使用 svn 客戶端執行操作失敗後,執行 Clean up 操作也報錯:Cleanup failed to process the following paths..

常見的情況及解決方法

常見的表死鎖情況及解決方法 1、死鎖的第一種情況 一個使用者A 訪問表A(鎖住了表A),然後又訪問表B;另一個使用者B 訪問表B(鎖住了表B),然後企圖訪問表A;這時使用者A由於使用者B已經鎖住表B,它必須等待使用者B釋放表B才能繼續,同樣使用者B要等使用者A釋放表A才能繼續,這就死鎖就產生了。

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

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

mysql操作時出現解決方式

情景:有時頻繁地某個表時,發現不能進行增刪改操作時,出現操作超時死鎖的情況 --顯示所有程序 show processlist kill id --顯示是否有死鎖 show   open tables where In_use > 0; --檢視死鎖 se

python中解決方法

1.新增超時時間: fromthreading import Thread, Lock importtime mutex1= Lock()  # 建立一個互斥鎖 mutex2= Lock()  # 建立一個互斥鎖 def fun1():     while True:

java查詢資料庫解決方法

        五一回來上班,像往常一樣開啟電腦啟動eclipse執行專案,一切都很正常……         言歸正傳,先說說發生的現象,專案啟動一直卡死,設定的tomcat啟動超時時間120,不會是因為這個啟動失敗,環境用了好幾個月一直正常;        後來檢視日誌發

產生的原因,產生死的必要條件和解決方法

死鎖:指多個程序因競爭共享資源而造成的一種僵局,若無外力作用,這些程序都將永遠不能再 向前推進。 安全狀態與不安全狀態:安全狀態指系統能按某種程序順序來為每個程序分配其所需資源,直至最大需求,使每個程序都可順利完成。若系統不存在這樣一個序列,則稱系統處於不安全狀態。

Oracle 解決

tin sel gtest 避免 machine active rac pre from 1 select ‘alter system kill session ‘‘‘ || SID || ‘,‘ || SERIAL# || ‘‘‘;‘ 2 3

解決MySQL事務未提交導致報錯 避免方法

解決mysql 事務未提交導致死鎖報錯:        當 sessionA 嘗試修改 B 表資料,因為 sessionB 當前為鎖定狀態,而且 sessionB 對 B 表中資料具有鎖定狀態中,則出現死鎖。sessionB 會自動終止嘗試修改 A 表資料事務, 兩個事務操作

造成資料庫的原因分析及解決方案

        在聯機事務處理(OLTP)的資料庫應用系統中,多使用者、多工的併發性是系統最重要的技術指標之一。為了提高併發性,目前大部分RDBMS都採用加鎖技術。然而由於現實環境的複雜性,使用加鎖技術又不可避免地產生了死鎖問題。因此如何合理有效地使用加鎖技術,最小化死鎖是

作業系統學習記錄之九:的產生及解決方法

死鎖的產生: 允許多個程序併發執行共享系統資源時,系統必須提供同步機制和程序通訊機制,然而,對這種機制使用不當的話,可能會出現程序永遠被阻塞的現象; 例如,兩個程序分別等待對方佔有的一個資源,於是兩者都不能執行而處於永遠等待,這種現象稱為“死鎖”;   死鎖的定義: 一

sqlserver程序解決辦法(一)

之前查了很多資料,一般都是在select 語句新增with(nolock)即可,但是如果是呼叫一些原始碼jar包,可是包裡面的方法沒有新增with(nolock),那麼久沒有辦法了,例如之前我做工工作流,呼叫的是activiti的jar包,它對於ibatis的呼叫,預設是不

sqlserver結構說明的方法

查sqlserver表結構說明一、查出某個庫的所有表名USE database_name GO SELECT tab.name AS tableName FROM sys.columns col INNER JOIN sys.tables tab

80端口占用解決方法()

index sql jin 進程id 系統進程 dex 傳輸 問題 netstat命令 今天啟動Apache的時候老是提示失敗,很簡單,使用 netstat -ano 發現80端口被占用。 方法/步驟 今天啟動Apache的時候老是提示失敗,

MyEclipse 打開到一半時卡解決方法

技術 便是 一半 myeclipse 工作空間 plugins ins 重新 列表 如圖: 一直卡在這個地方動不了。 解決方法便是找到myeclipse的工作空間目錄下\.metadata\.plugins 找到列表下帶workbench的文件夾,並刪除。然後重新啟動My

跟蹤: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占比,並