USE DBA
GO
--추적 트레이스를 시작
DBCC TRACEON(1222, 1204, -1)
GO
--교착 상태를 캡쳐할 테이블 생성
CREATE TABLE DeadlockCheck ( DeadlockInfo XML, CheckTime DATETIME);
GO
--프로시저 생성
CREATE PROCEDURE [dbo].[Up_DeadLockCheck_Ins]
AS
SET NOCOUNT ON
INSERT INTO [dbo].[DeadlockCheck] (DeadlockInfo, CheckTime)
SELECT CAST(REPLACE(REPLACE(TBLX.XEvent.value('(data/value)[1]', 'varchar(max)'), '<victim-list>', '<deadlock><victim-list>'),
'<process-list>', '</victim-list><process-list>') as xml) as DeadlockInfo
, GETDATE() CheckTime
FROM (
select CAST(target_data as xml) as TargetData
from sys.dm_xe_session_targets st join sys.dm_xe_sessions s
on s.address = st.event_session_address
where name = 'system_health') as Data
cross apply TargetData.nodes('//RingBufferTarget/event') as TBLX(XEvent)
WHERE TBLX.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report'
--데드락 잡
use msdb
go
exec sp_add_job @job_name = '[경고] 데드락 발생'
exec sp_add_jobstep @job_name = '[경고] 데드락 발생'
, @step_id = 1
, @step_name = '데드락 발생'
, @subsystem = 'TSQL'
, @command = 'EXEC dbo.Up_DeadLockCheck_Ins'
, @database_name = 'DBA'
exec sp_add_jobserver @job_name = '[경고] 데드락 발생', @server_name = N'(local)'
GO
--데드락 경고
EXEC sp_add_alert
@name = '[경고] 데드락발생경고'
, @message_id = 0
, @severity = 0
, @enabled = 1
, @delay_between_responses = 0
, @include_event_description_in = 0
, @category_name = N'[Uncategorized]'
, @performance_condition = N'SQLServer:Locks|Number of Deadlocks/sec|_Total|>|0'
, @job_name = '[경고] 데드락 발생'
'연구개발 > DBA' 카테고리의 다른 글
대기분석용 프로시저 (0) | 2012.05.30 |
---|---|
트랜잭션 걸려있는 것들 찾기 transaction (0) | 2012.05.30 |
파티션 카탈로그 뷰 (0) | 2012.05.22 |
슬라이딩 윈도우 기법을 이용한 파티션 관리 (0) | 2012.05.22 |
파티션 관련 정보 (0) | 2012.05.22 |