좋은 오픈 소스 또는 무료 MS SQL Server 트랜잭션 모니터링 차단 도구가 있습니까? X보다 오래 지속되는 차단 트랜잭션을 감지 한 다음 어딘가에서 경고를 전자 메일로 보내는 것이 이상적 일 수 있습니다.MS SQL Server 타사 트랜잭션 차단 모니터 도구
한 서버에 간단합니다. MS SQL Express 2008의 경우 특별히 적용되지만 모든 항목 또는 모든 항목에 적용해야합니다.
좋은 오픈 소스 또는 무료 MS SQL Server 트랜잭션 모니터링 차단 도구가 있습니까? X보다 오래 지속되는 차단 트랜잭션을 감지 한 다음 어딘가에서 경고를 전자 메일로 보내는 것이 이상적 일 수 있습니다.MS SQL Server 타사 트랜잭션 차단 모니터 도구
한 서버에 간단합니다. MS SQL Express 2008의 경우 특별히 적용되지만 모든 항목 또는 모든 항목에 적용해야합니다.
예, 실제로 SQL Server에는 이러한 옵션이 기본적으로 제공되지만 거의 사용하지 않고 사용 방법을 알고있는 사람은 거의 없습니다. 프로세스 보고서가 생성 차단하는,
는 초 임계 값을 지정할 차단 된 프로세스 임계 값 옵션을 사용 :이
blocked process threshold
이라고합니다. 임계 값은 0에서 86,400까지 설정할 수 있습니다. 기본적으로 차단 된 프로세스 보고서는 생성되지 않습니다. 이 이벤트는 시스템 태스크 또는 감지 가능한 교착 상태를 생성하지 않는 자원에서 대기중인 태스크에 대해서는 생성되지 않습니다.이 이벤트가 생성 될 때 실행될 경고를 정의 할 수 있습니다. 예를 들어 관리자에게 차단 상황을 처리하기위한 적절한 조치를 취하도록 선택할 수 있습니다.
이 옵션을 사용하면 시스템에서 Blocked Process Report Event Class의 프로파일 러 이벤트가 생성됩니다. 다음 퍼즐 조각은 DDL Event Notifications을 사용하여이 (더 많은 정보를 포함하여) 프로필러 이벤트를 캡처 할 수 있다는 것입니다.
select * from tempdb..x
10 초, 확실히 충분히 (우리 구성된 임계 값) :
use msdb;
go
create queue events;
go
create service events on queue [events] (
[http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]);
go
create event notification [blocked_threshold_exceeded]
on server for BLOCKED_PROCESS_REPORT
to service N'events', N'current database';
go
exec sp_configure 'show advanced options', 1;
reconfigure
go
exec sp_configure 'blocked process threshold', 10;
reconfigure
go
-- simulate blocking
use tempdb;
go
begin transaction;
create table x (a int);
go
다른 세션에서 커밋되지 않은 트랜잭션에 블록 위에서 시작, 루나 쿼리, 이제 다음은 실제 예입니다 우리는 알림을받습니다 :
use msdb;
receive cast(message_body as xml) from [events];
<EVENT_INSTANCE>
<EventType>BLOCKED_PROCESS_REPORT</EventType>
<PostTime>2013-02-12T16:19:55.610</PostTime>
<SPID>5</SPID>
<TextData>
<blocked-process-report monitorLoop="104441">
<blocked-process>
<process id="process47b946cf8"
waitresource="OBJECT: 2:373576369:0 "
waittime="18952" ...>
<executionStack>
<frame line="1" stmtstart="-1" ... />
</executionStack>
<inputbuf>
select * from x </inputbuf>
</process>
</blocked-process>
<blocking-process>
<process status="sleeping" ....>
<executionStack />
<inputbuf>
create table x (a int) </inputbuf>
</process>
</blocking-process>
</blocked-process-report>
</TextData>
...
</EVENT_INSTANCE>
블로커에 의해 마지막으로 실행 된 문장, 블로킹 된 현재 실행중인 문장 및 대기 시간을 볼 수 있습니다.
sp_send_db_mail
을 사용하여 메일을 보내는 절차를 활성화하기 위해 이벤트 알림을 연결하는 것은 독자에게 연습 문제로 남겨 둡니다. 그리고 예, 위에서 언급 한은 모두 Express Edition에서 사용할 수 있습니다.
좋은 정보, 당신이 제공 한 프로그래밍 솔루션에 감사드립니다. (주제와 관련하여 닫힌 이유와 반대!) – iss42
누구든지이 작업을 원할 경우 도움이 될 수 있기 때문에 나는 스크립트를 작성하여 이메일을 보내기 위해 blat을 사용했습니다. windows 이메일 이벤트 옵션은 SMTP 로그인 등을 허용하지 않습니다. Blat은 http://www.blat.net/ – iss42
btw입니다. 닫으려면 투표하지 않았지만 DBA.SE로 이동하려면 –