3
어쨌든 경보를 구성하고 SQL 프로파일 러 또는 관리 스튜디오에서 someithing을 사용하여 장기 실행 쿼리를 삭제할 수 있습니까?SQL 프로파일 러에서 경보를 설정하고 longrunning 쿼리를 종료하는 방법
어쨌든 경보를 구성하고 SQL 프로파일 러 또는 관리 스튜디오에서 someithing을 사용하여 장기 실행 쿼리를 삭제할 수 있습니까?SQL 프로파일 러에서 경보를 설정하고 longrunning 쿼리를 종료하는 방법
당신은 당신이 가입에 대한 프로세스 ID로 작업 ID를 변환하는 새로운 UDF를해야합니다, 신용 SQL Alert when stored procedure executes for too long에
먼저 간다 .. 마스터에서의 sysprocesses을 모니터링 proc 디렉토리에 저장을 작성할 수 있습니다 :
CREATE FUNCTION dbo.udf_SysJobs_GetProcessid(@job_id uniqueidentifier)
RETURNS VARCHAR(8)
AS
BEGIN
RETURN (substring(left(@job_id,8),7,2) +
substring(left(@job_id,8),5,2) +
substring(left(@job_id,8),3,2) +
substring(left(@job_id,8),1,2))
END
그리고 다음 SPROC :
이CREATE PROC sp_check_job_running
@job_name char(50),
@minutes_allowed int,
@person_to_notify varchar(50)
AS
DECLARE @minutes_running int,
@message_text varchar(255)
SELECT @minutes_running = isnull(DATEDIFF(mi, p.last_batch, getdate()), 0)
FROM master..sysprocesses p
JOIN msdb..sysjobs j ON dbo.udf_sysjobs_getprocessid(j.job_id) = substring(p.program_name,32,8)
WHERE j.name = @job_name
IF @minutes_running > @minutes_allowed
BEGIN
SELECT @message_text = ('Job ' + UPPER(SUBSTRING(@job_name,1,LEN(@job_name))) + ' has been running for ' + SUBSTRING(CAST(@minutes_running AS char(5)),1,LEN(CAST(@minutes_running AS char(5)))) + ' minutes, which is over the allowed run time of ' + SUBSTRING(CAST(@minutes_allowed AS char(5)),1,LEN(CAST(@minutes_allowed AS char(5)))) + ' minutes.')
EXEC msdb.dbo.sp_send_dbmail
@recipients = @person_to_notify,
@body = @message_text,
@subject = 'Long-Running Job to Check'
END
는 그런 다음
,369로 저장된 프로 시저를 간부 인 수EXEC sp_check_job_running 'JobNameGoesHere', 5, '[email protected]'