十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
查看被鎖表:
10年積累的成都網(wǎng)站設(shè)計、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有克山免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type='OBJECT'
spid 鎖表進(jìn)程
tableName 被鎖表名
1、首先需要判斷是哪個用戶鎖住了哪張表.
查詢被鎖表
select?request_session_id?spid,OBJECT_NAME(resource_associated_entity_id)?tableName?
from?sys.dm_tran_locks?where?resource_type='OBJECT'
查詢后會返回一個包含spid和tableName列的表.
其中spid是進(jìn)程名,tableName是表名.
2.了解到了究竟是哪個進(jìn)程鎖了哪張表后,需要通過進(jìn)程找到鎖表的主機.
查詢主機名
exec?sp_who2?'xxx'
xxx就是spid列的進(jìn)程,檢索后會列出很多信息,其中就包含主機名.
3.通過spid列的值進(jìn)行關(guān)閉進(jìn)程.
關(guān)閉進(jìn)程
declare?@spid?int
Set?@spid?=?xxx?--鎖表進(jìn)程
declare?@sql?varchar(1000)
set?@sql='kill?'+cast(@spid?as?varchar)
exec(@sql)
PS:有些時候強行殺掉進(jìn)程是比較危險的,所以最好可以找到執(zhí)行進(jìn)程的主機,在該機器上關(guān)閉進(jìn)程.
SQL SERVER 通過鎖管理器自動發(fā)現(xiàn)和解決死鎖。在 SQL SERVER 中 Lock Monitor 管理線程(spid=4)每 5 秒鐘檢查一次系統(tǒng)中是否存在死鎖,同時也會使用死鎖發(fā)現(xiàn)計數(shù)器(Deadlock Detection Counter)控制檢查死鎖的頻率。
死鎖發(fā)現(xiàn)計數(shù)器初始值為 3,當(dāng)發(fā)現(xiàn)死鎖時被重新設(shè)置為 3,當(dāng)沒有發(fā)現(xiàn)死鎖時此值減 1。如果死鎖發(fā)現(xiàn)計數(shù)器大于 0,則在每次有進(jìn)程獲取鎖被阻止時,鎖管理器都要求 Lock Monitor 線程檢查死鎖;而如果計數(shù)器等于 0,則在每次有進(jìn)程獲取鎖被阻止時,鎖管理器不會要求 Lock Monitor 線程檢查死鎖,只是每 5 秒鐘檢查一次。
Lock Monitor 線程通過檢查鎖的等待列表發(fā)現(xiàn)保持鎖的進(jìn)程和等待鎖的進(jìn)程間的關(guān)系,從而發(fā)現(xiàn)死鎖。
詳細(xì)步驟如下:
1、點擊【新建查詢】按鈕,打開SQL命令編輯框,對數(shù)據(jù)庫表的操作以及維護都可以通過編輯SQL命令實現(xiàn)。
2、在編輯框內(nèi)編輯創(chuàng)建數(shù)據(jù)庫表的代碼,確認(rèn)代碼無誤后,單擊【執(zhí)行】按鈕,創(chuàng)建數(shù)據(jù)表。
3、創(chuàng)建數(shù)據(jù)表的源代碼如下:
use test go
if exists(select name from sys.tables where name='Student')
drop table Student go
create table Student
(sname nchar(10) primary key,
sex nchar(2) not null,
bir datetime)
數(shù)據(jù)庫管理系統(tǒng),database management system,簡稱dbms,是一種操縱和管理數(shù)據(jù)庫的大型軟件,用于建立、使用和維護數(shù)據(jù)庫。用戶通過dbms訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理員也通過dbms進(jìn)行數(shù)據(jù)庫的維護工作。它可使多個應(yīng)用程序和用戶用不同的方法在同時或不同時刻去建立,修改和詢問數(shù)據(jù)庫。
提供數(shù)據(jù)定義語言(ddl)。用它書寫的數(shù)據(jù)庫模式被翻譯為內(nèi)部表示。數(shù)據(jù)庫的邏輯結(jié)構(gòu)、完整性約束和物理儲,存結(jié)構(gòu)保存在內(nèi)部的數(shù)據(jù)字典中。數(shù)據(jù)庫的各種數(shù)據(jù)操作(如查找、修改、插入和刪除等)和數(shù)據(jù)庫的維護管理都是以數(shù)據(jù)庫模式為依據(jù)的。
(1)
HOLDLOCK:
在該表上保持共享鎖,直到整個事務(wù)結(jié)束,而不是在語句執(zhí)行完立即釋放所添加的鎖。
(2)
NOLOCK:不添加共享鎖和排它鎖,當(dāng)這個選項生效后,可能讀到未提交讀的數(shù)據(jù)或“臟數(shù)據(jù)”,這個選項僅僅應(yīng)用于SELECT語句。
(3)
PAGLOCK:指定添加頁鎖(否則通常可能添加表鎖)。
(4)
READCOMMITTED用與運行在提交讀隔離級別的事務(wù)相同的鎖語義執(zhí)行掃描。默認(rèn)情況下,SQL
Server
2000
在此隔離級別上操作。
(5)
READPAST:
跳過已經(jīng)加鎖的數(shù)據(jù)行,這個選項將使事務(wù)讀取數(shù)據(jù)時跳過那些已經(jīng)被其他事務(wù)鎖定的數(shù)據(jù)行,而不是阻塞直到其他事務(wù)釋放鎖,
READPAST僅僅應(yīng)用于READ
COMMITTED隔離性級別下事務(wù)操作中的SELECT語句操作。
(6)
READUNCOMMITTED:等同于NOLOCK。
(7)
REPEATABLEREAD:設(shè)置事務(wù)為可重復(fù)讀隔離性級別。
(8)
ROWLOCK:使用行級鎖,而不使用粒度更粗的頁級鎖和表級鎖。
(9)
SERIALIZABLE:用與運行在可串行讀隔離級別的事務(wù)相同的鎖語義執(zhí)行掃描。等同于
HOLDLOCK。
(10)
TABLOCK:指定使用表級鎖,而不是使用行級或頁面級的鎖,SQL
Server在該語句執(zhí)行完后釋放這個鎖,而如果同時指定了...(1)
HOLDLOCK:
在該表上保持共享鎖,直到整個事務(wù)結(jié)束,而不是在語句執(zhí)行完立即釋放所添加的鎖。
(2)
NOLOCK:不添加共享鎖和排它鎖,當(dāng)這個選項生效后,可能讀到未提交讀的數(shù)據(jù)或“臟數(shù)據(jù)”,這個選項僅僅應(yīng)用于SELECT語句。
(3)
PAGLOCK:指定添加頁鎖(否則通??赡芴砑颖礞i)。
(4)
READCOMMITTED用與運行在提交讀隔離級別的事務(wù)相同的鎖語義執(zhí)行掃描。默認(rèn)情況下,SQL
Server
2000
在此隔離級別上操作。
(5)
READPAST:
跳過已經(jīng)加鎖的數(shù)據(jù)行,這個選項將使事務(wù)讀取數(shù)據(jù)時跳過那些已經(jīng)被其他事務(wù)鎖定的數(shù)據(jù)行,而不是阻塞直到其他事務(wù)釋放鎖,
READPAST僅僅應(yīng)用于READ
COMMITTED隔離性級別下事務(wù)操作中的SELECT語句操作。
(6)
READUNCOMMITTED:等同于NOLOCK。
(7)
REPEATABLEREAD:設(shè)置事務(wù)為可重復(fù)讀隔離性級別。
(8)
ROWLOCK:使用行級鎖,而不使用粒度更粗的頁級鎖和表級鎖。
(9)
SERIALIZABLE:用與運行在可串行讀隔離級別的事務(wù)相同的鎖語義執(zhí)行掃描。等同于
HOLDLOCK。
(10)
TABLOCK:指定使用表級鎖,而不是使用行級或頁面級的鎖,SQL
Server在該語句執(zhí)行完后釋放這個鎖,而如果同時指定了HOLDLOCK,該鎖一直保持到這個事務(wù)結(jié)束。
(11)
TABLOCKX:指定在表上使用排它鎖,這個鎖可以阻止其他事務(wù)讀或更新這個表的數(shù)據(jù),直到這個語句或整個事務(wù)結(jié)束。
(12)
UPDLOCK
:指定在
讀表中數(shù)據(jù)時設(shè)置更新
鎖(update
lock)而不是設(shè)置共享鎖,該鎖一直保持到這個語句或整個事務(wù)結(jié)束,使用UPDLOCK的作用是允許用戶先讀取數(shù)據(jù)(而且不阻塞其他用戶讀數(shù)據(jù)),并且保證在后來再更新數(shù)據(jù)時,這一段時間內(nèi)這些數(shù)據(jù)沒有被其他用戶修改。