国产亚洲精品a在线看。,骚货想不想被艹,国产麻豆剧传媒兔子先生,好大好爽好想要被操视频

Rss & SiteMap

昂捷論壇 http://www.26035.net

中國零售業(yè)界精英論壇!
共1 條記錄, 每頁顯示 15 條, 頁簽: [1]
[瀏覽完整版]

標(biāo)題:sql死鎖監(jiān)控

1樓
czg1981 發(fā)表于:2010/5/10 10:13:24

死鎖原因: 提取查詢數(shù)據(jù)相應(yīng)數(shù)據(jù),修改Stat表,都是修改同一條數(shù)據(jù),進(jìn)行大數(shù)據(jù)量的操作,多用戶同時操作時,造成數(shù)據(jù)庫死鎖和阻塞; 相關(guān)知識: 1、SQL死鎖和阻塞。 2、死鎖測試方法:程序中將數(shù)據(jù)庫操作,循環(huán)操作1萬次,打開多個窗口同時執(zhí)行。 3、查找

死鎖原因:

提取查詢數(shù)據(jù)相應(yīng)數(shù)據(jù),修改Stat表,都是修改同一條數(shù)據(jù),進(jìn)行大數(shù)據(jù)量的操作,多用戶同時操作時,造成數(shù)據(jù)庫死鎖和阻塞;

相關(guān)知識:

1、SQL死鎖和阻塞。

2、死鎖測試方法:程序中將數(shù)據(jù)庫操作,循環(huán)操作1萬次,打開多個窗口同時執(zhí)行。

3、查找數(shù)據(jù)庫死鎖原因的方法。

下面的SQL語句運行之后,便可以查找出SQLServer的死鎖和阻塞的源頭。

 

查找出SQLServer的死鎖和阻塞的源頭

 

use master
go
declare @spid int,@bl int
DECLARE s_cur CURSOR FOR
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
OPEN s_cur
FETCH NEXT FROM s_cur INTO @spid,@bl
WHILE @@FETCH_STATUS = 0
begin
if @spid =0
 select '引起數(shù)據(jù)庫死鎖的是:
'+ CAST(@bl AS VARCHAR(10)) + '進(jìn)程號,其執(zhí)行的SQL語法如下'
else
select '進(jìn)程號SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '
進(jìn)程號SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其當(dāng)前進(jìn)程執(zhí)行的SQL語法如下'
DBCC INPUTBUFFER (@bl )
FETCH NEXT FROM s_cur INTO @spid,@bl
end
CLOSE s_cur
DEALLOCATE s_cur

查看當(dāng)前進(jìn)程,或死鎖進(jìn)程,并能自動殺掉死進(jìn)程
--因為是針對死的,所以如果有死鎖進(jìn)程,只能查看死鎖進(jìn)程。當(dāng)然,你可以通過參數(shù)控制,不管有沒有死鎖,都只查看死鎖進(jìn)程。
create proc p_lockinfo
@kill_lock_spid bit=1, --是否殺掉死鎖的進(jìn)程,1 殺掉, 0 僅顯示
@show_spid_if_nolock bit=1 --如果沒有死鎖的進(jìn)程,是否顯示正常進(jìn)程信息,1 顯示,0 不顯示
as
declare @count int,@s nvarchar(1000),@i int
select id=identity(int,1,1),標(biāo)志,
進(jìn)程ID=spid,線程ID=kpid,塊進(jìn)程ID=blocked,數(shù)據(jù)庫ID=dbid,
數(shù)據(jù)庫名=db_name(dbid),用戶ID=uid,用戶名=loginame,累計CPU時間=cpu,
登陸時間=login_time,打開事務(wù)數(shù)=open_tran, 進(jìn)程狀態(tài)=status,
工作站名=hostname,應(yīng)用程序名=program_name,工作站進(jìn)程ID=hostprocess,
域名=nt_domain,網(wǎng)卡地址=net_address
into #t from(
select 標(biāo)志='死鎖的進(jìn)程',
spid,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,
status,hostname,program_name,hostprocess,nt_domain,net_address,
s1=a.spid,s2=0
from master..sysprocesses a join (
select blocked from master..sysprocesses group by blocked
)b on a.spid=b.blocked where a.blocked=0
union all
select '|_犧牲品_>',
spid,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,
status,hostname,program_name,hostprocess,nt_domain,net_address,
s1=blocked,s2=1
from master..sysprocesses a where blocked<>0
)a order by s1,s2

select @count=@@rowcount,@i=1

if @count=0 and @show_spid_if_nolock=1
begin
insert #t
select 標(biāo)志='正常的進(jìn)程',
spid,kpid,blocked,dbid,db_name(dbid),uid,loginame,cpu,login_time,
open_tran,status,hostname,program_name,hostprocess,nt_domain,net_address
from master..sysprocesses
set @count=@@rowcount
end

if @count>0
begin
create table #t1(id int identity(1,1),a nvarchar(30),
b Int,EventInfo nvarchar(255))
if @kill_lock_spid=1
begin
declare @spid varchar(10),@標(biāo)志 varchar(10)
while @i<=@count
begin
select @spid=進(jìn)程ID,@標(biāo)志=標(biāo)志 from #t where id=@i
insert #t1 exec('dbcc inputbuffer('+@spid+')')
if @標(biāo)志='死鎖的進(jìn)程' exec('kill '+@spid)
set @i=@i+1
end
end
else
while @i<=@count
begin
select @s='dbcc inputbuffer('+cast(進(jìn)程ID as varchar)+')'
 from #t where id=@i
insert #t1 exec(@s)
set @i=@i+1
end
select a.*,進(jìn)程的SQL語句=b.EventInfo
from #t a join #t1 b on a.id=b.id
end
go


exec p_lockinfo

 

共1 條記錄, 每頁顯示 15 條, 頁簽: [1]

Copyright © 2006-2010 EnjoyIT.com.cn
網(wǎng)友言論或觀點與昂捷公司無關(guān)!涉及版權(quán)/著作權(quán)問題請與發(fā)帖者直接聯(lián)系
Powered By Dvbbs Version 8.2.0
Processed in 0.14844 s, 2 queries.
奇台县| 麦盖提县| 贞丰县| 新津县| 胶州市| 蛟河市| 嵩明县| 乐亭县| 五河县| 项城市| 锦屏县| 潞西市| 三河市| 榆树市| 集贤县| 鹤岗市| 潞城市| 杭锦旗| 鄂托克前旗| 前郭尔| 神木县| 阳春市| 乐清市| 收藏| 永德县| 德兴市| 垣曲县| 都兰县| 邵阳市| 高密市| 嘉黎县| 石城县| 宽城| 界首市| 汉阴县| 山西省| 和田县| 苏尼特右旗| 香河县| 晋江市| 綦江县|