程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

鎖的問題

編輯:關於MYSQL數據庫
現在老是出現這樣的錯誤提示!

-2147467259 Your transaction(process ID #30) was deadlocked with another process and has been chosen as the deadlock victim.Return your transaction.

use master
go
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500),@temp varchar(1000)
declare @spid int
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status<>-1
begin
set @temp='kill '+rtrim(@spid)
exec(@temp)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end

--用法
use master
exec killspid '數據庫名'

死鎖可以查一下:
1:sp_who 或 sp_who2
2: Select * from sysprocesses where blocked <> 0
3: 企業管理器->服務器->管理工具->活動->當前活動 然後把他kill掉。。。
4:SQL事件探查器,監控一下,看主要是那些處理引起的死鎖.然後做相應的處理.
用事件探查器new一個trace,監視一下造成你sqlserver停頓的情況。。。

最好的辦法還是檢查一下引起鎖的原因,一般是由你的代碼引起的。

SQL事件探查器用法
開始--程序--MS SQLSERVER
--事件探察器(SQL Profiler)
--文件
--新建

--設置跟蹤的項目...
--然後數據庫的調用情況就會顯示出

--查看鎖信息
select 進程id=req_spid
,數據庫=db_name(rsc_dbid)
,類型=case rsc_type when 1 then 'NULL 資源(未使用)'
when 2 then '數據庫'
when 3 then '文件'
when 4 then '索引'
when 5 then '表'
when 6 then '頁'
when 7 then '鍵'
when 8 then '擴展盤區'
when 9 then 'RID(行 ID)'
when 10 then '應用程序'
end
,rsc_objid,rsc_indid
from master..syslockinfo

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved