在线播放亚洲第一字幕,大鸡巴操死我了视频网站,欧美日韩中文字,久久久999婷婷欧美一区

以文本方式查看主題

-  昂捷論壇  (http://www.yzsenyi.com/bbs/index.asp)
--  □-系統(tǒng)配置管理類  (http://www.yzsenyi.com/bbs/list.asp?boardid=34)
----  如何能知道日結(jié)是被誰死鎖導(dǎo)致失敗的?  (http://www.yzsenyi.com/bbs/dispbbs.asp?boardid=34&id=9308)

--  作者:prcak47
--  發(fā)布時間:2015/6/24 15:42:18
--  如何能知道日結(jié)是被誰死鎖導(dǎo)致失敗的?

系統(tǒng)的每日結(jié)算過程是一個很復(fù)雜又很重要的過程

這個過程執(zhí)行時間比較長,偶爾會被傳輸或者不正常的報表操作等等死鎖掉

但是在系統(tǒng)日志中只知道是因為死鎖而失敗,卻不知道因為具體什么事件或者過程而造成了死鎖。

下面這個過程可以記錄死鎖和被死鎖的語句,從而幫助我們分析故障原因,從而拿出具體的解決方法。

 

首先用下面語句創(chuàng)建表

create table tb_log_inputbuffer
(c_spid int,
c_blk int,
c_loginame varchar(100),
c_host_name varchar(100),
c_dbname varchar(20),
c_dt datetime,
c_sql_spid varchar(4000),
c_sql_blk varchar(4000))

 

可以在系統(tǒng)內(nèi)建立報表,不定時查詢該表數(shù)據(jù)

 

然后用下面的語句創(chuàng)建存儲過程

 


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date: <20150619>
-- Description: <記錄死鎖定時任務(wù)>
-- =============================================
CREATE PROCEDURE up_log_inputbuffer
AS
BEGIN

/****
需要創(chuàng)建該表

drop table tb_log_inputbuffer

create table tb_log_inputbuffer
(c_spid int,
c_blk int,
c_loginame varchar(100),
c_host_name varchar(100),
c_dbname varchar(20),
c_dt datetime,
c_sql_spid varchar(4000),
c_sql_blk varchar(4000))

***/

---創(chuàng)建sp_who臨時記錄表
create table #p_who
(spid int,
ecid int,
c_status varchar(20),
loginame varchar(100),
hostname varchar(100),
blk int,
dbanme varchar(20),
cmd varchar(100),
request_id int)

--插入sp_who記錄
insert into #p_who
exec sp_who

--刪除沒有死鎖的記錄
delete #p_who
where blk = 0

--將死鎖記錄在表中
insert into tb_log_inputbuffer(c_spid,c_blk,c_loginame,c_host_name,c_dbname,c_dt,c_sql_blk,c_sql_spid)
select spid,blk,loginame,hostname,dbanme,GETDATE(),\'\',\'\' from #p_who

declare @blk int
declare @spid int
declare @sql_handle varbinary(64)
declare @sql varchar(4000)

--用游標遍歷所有死鎖記錄,查詢死鎖和被死鎖語句,記錄在表中

declare curs_inputbuffer cursor
for
select spid,blk from #p_who

open curs_inputbuffer

fetch curs_inputbuffer into @spid,@blk

while @@fetch_status=0
begin

---查詢造成死鎖的語句
select @sql_handle = most_recent_sql_handle
from sys.dm_exec_connections
where session_id = @blk

select @sql = [text] from sys.dm_exec_sql_text(@sql_handle)

update tb_log_inputbuffer set c_sql_blk = @sql
where c_spid = @spid

--查詢被死鎖的語句
select @sql_handle = most_recent_sql_handle
from sys.dm_exec_connections
where session_id = @spid

select @sql = [text] from sys.dm_exec_sql_text(@sql_handle)

update tb_log_inputbuffer set c_sql_spid = @sql
where c_spid = @spid

fetch curs_inputbuffer into @spid,@blk
end

close curs_inputbuffer
deallocate curs_inputbuffer


END
GO

 

存儲過程創(chuàng)建后,可以用該存儲過程建立數(shù)據(jù)庫定時任務(wù),每分鐘執(zhí)行一次

在營業(yè)結(jié)束后開始,日結(jié)結(jié)束后停止。

 

這樣通過查詢表  tb_log_inputbuffer 數(shù)據(jù)就可以知道死鎖的時候所發(fā)生的事情。


彭阳县| 额尔古纳市| 吉安县| 德安县| 河东区| 峡江县| 马尔康县| 德昌县| 鄂尔多斯市| 阳城县| 闽侯县| 麦盖提县| 舟曲县| 武夷山市| 平乐县| 观塘区| 和龙市| 依安县| 洛浦县| 隆化县| 永春县| 郧西县| 柳江县| 湛江市| 盐津县| 荥经县| 天津市| 昭苏县| 屯门区| 康马县| 台山市| 盐城市| 阜新市| 仙居县| 抚州市| 巴塘县| 若羌县| 莆田市| 凌海市| 定日县| 长兴县|