한 인스턴스에 약 40 개의 다른 SQL Server 작업이 있습니다. 그들은 모두 서로 다른 스케줄을 가지고 있습니다. 일부는 하루에 한 번, 매 2 분마다 5 분마다 실행됩니다. SQL Server 에이전트를 중지해야하는 경우 작업이 실행되지 않을 때 가장 좋은 시간을 찾아 내 작업을 방해하지 않으려면 어떻게해야합니까?작업이 실행되고 있지 않을 때 SQL Server 에이전트를 자동으로 중지하는 방법?
답변
작업을 사용하지 못하게하는 스크립트를 만드는 것이 좋습니다. 비활성화 된 작업은 여전히 존재하지만 일정에 따라 자동으로 실행되지 않습니다. 작업을 사용하지 않도록 설정하고 현재 실행중인 작업이 실행을 완료 할 때까지 기다린 다음 SQL 에이전트를 중지하려면이 스크립트 (msdb 데이터베이스의 sp_update_job
프로 시저를 기반으로 함)를 실행하십시오. 비활성화 된 작업을 다시 활성화하는 유사한 스크립트가 유용합니다. 장애인으로 남아 있어야하는 일을 계획해야 할 수도 있습니다.
완전한 "SQL 에이전트 종료"프로세스를 완전히 스크립팅 할 수는 있지만 그렇게하는 것이 좋습니다. 약간의 연구는 주어진 작업이 실행 중인지 아닌지를 프로그래밍 방식으로 알려주는 100 % 신뢰할 수있는 방법이 없다는 것을 의미하며 문서화되지 않은 경우 ("문서화되지 않은"는 "이 문서를 사용하지 않아야 함"을 의미합니다) 시스템 SQL Server 자체를 사용하여 서비스를 중지하고 시작하는 절차는 매우 나쁜 생각처럼 보입니다.
질문 제목이 나에게 조금 겁 먹었습니다. 실행중인 작업이 없을 때 프로그래밍 방식으로 SQL Server 에이전트를 종료하려고한다고 생각했습니다. 그 질문에 대한 나의 대답은 "왜?" 필요가 없습니다.
그러나 계획된 재시작 또는 종료를 원할 때 시각적으로 처리 할 Sentry One의 SQL Sentry Event Manager와 같은 타사 도구가 없다면 SQL Server 에이전트 작업 내역 및 Job Activity Monitor 도움말을 참조하십시오. 작업 활동 모니터는 상태 컬럼에서 현재 실행중인 작업을 표시 할 수 있습니다. 또한 마지막 실행 날짜와 다음 실행 날짜 및 시간을 볼 수 있습니다.
SSMS의 개체 브라우저에서 인스턴스에 연결 한 다음 SQL Server 에이전트를 확장하면 작업이 표시되고 그 아래에 "작업 활동 모니터"가 표시됩니다.이보기에는 필요한 항목이 표시됩니다.
또한 작업이 실행되기 전에 종료하는 것에 대해 걱정할 필요가 없습니다. 그렇게하면 일정이 누락 된 작업이 생기고 다음 작업 일 때 (작업 및 목적에 따라 다름) 실행되도록하거나 수동으로 작업을 마우스 오른쪽 단추로 클릭하고 실행할 수 있습니다.
작업에 대한 작업 모니터에 대한 자세한 내용은 제품 설명서에서 Monitor Job Activity을 참조하십시오.
일자리가 없을 때 가장 좋은 시간을 찾아 내 작업을 방해하지 않으려면 어떻게해야합니까?
기본적으로 유지 관리를 수행하기위한 좋은 창을 찾고 싶습니다. MSSQLTips.com 기사 Querying SQL Server Agent Job Information에 Dattatrey Sindol 같이 @MaxVernon는
/*
Shows gaps between agent jobs
-- http://www.sqlserver.science/tools/gaps-between-sql-server-agent-jobs/
-- requires SQL Server 2012+ since it uses the LAG aggregate.
Note: On SQL Server 2005, SQL Server 2008, and SQL Server 2008 R2, you could replace the LastEndDateTime column definition with:
LastEndDateTime = (SELECT TOP(1) s1a.EndDateTime FROM s1 s1a WHERE s1a.rn = s1.rn - 1)
*/
DECLARE @EarliestStartDate DATETIME;
DECLARE @LatestStopDate DATETIME;
SET @EarliestStartDate = DATEADD(DAY, -1, GETDATE());
SET @LatestStopDate = GETDATE();
;WITH s AS
(
SELECT StartDateTime = msdb.dbo.agent_datetime(sjh.run_date, sjh.run_time)
, MaxDuration = MAX(sjh.run_duration)
FROM msdb.dbo.sysjobs sj
INNER JOIN msdb.dbo.sysjobhistory sjh ON sj.job_id = sjh.job_id
WHERE sjh.step_id = 0
AND msdb.dbo.agent_datetime(sjh.run_date, sjh.run_time) >= @EarliestStartDate
AND msdb.dbo.agent_datetime(sjh.run_date, sjh.run_time) < = @LatestStopDate
GROUP BY msdb.dbo.agent_datetime(sjh.run_date, sjh.run_time)
UNION ALL
SELECT StartDate = DATEADD(SECOND, -1, @EarliestStartDate)
, MaxDuration = 1
UNION ALL
SELECT StartDate = @LatestStopDate
, MaxDuration = 1
)
, s1 AS
(
SELECT s.StartDateTime
, EndDateTime = DATEADD(SECOND, s.MaxDuration - ((s.MaxDuration/100) * 100)
+ (((s.MaxDuration - ((s.MaxDuration/10000) * 10000))
- (s.MaxDuration - ((s.MaxDuration/100) * 100)))/100) * 60
+ (((s.MaxDuration - ((s.MaxDuration/1000000) * 1000000))
- (s.MaxDuration - ((s.MaxDuration/10000) * 10000)))/10000) * 3600, s.StartDateTime)
FROM s
)
, s2 AS
(
SELECT s1.StartDateTime
, s1.EndDateTime
, LastEndDateTime = LAG(s1.EndDateTime) OVER (ORDER BY s1.StartDateTime)
FROM s1
)
SELECT GapStart = CONVERT(DATETIME2(0), s2.LastEndDateTime)
, GapEnd = CONVERT(DATETIME2(0), s2.StartDateTime)
, GapLength = CONVERT(TIME(0), DATEADD(SECOND, DATEDIFF(SECOND, s2.LastEndDateTime, s2.StartDateTime), 0))
FROM s2
WHERE s2.StartDateTime > s2.LastEndDateTime
ORDER BY s2.StartDateTime;
당신은 시스템 테이블을 조회 할 수있는 편리한 스크립트로 here에 대해 블로그했습니다
SELECT [sJOB].[job_id] AS [JobID] , [sJOB].[name] AS [JobName] , [sDBP].[name] AS [JobOwner] , [sCAT].[name] AS [JobCategory] , [sJOB].[description] AS [JobDescription] , CASE [sJOB].[enabled] WHEN 1 THEN 'Yes' WHEN 0 THEN 'No' END AS [IsEnabled] , [sJOB].[date_created] AS [JobCreatedOn] , [sJOB].[date_modified] AS [JobLastModifiedOn] , [sSVR].[name] AS [OriginatingServerName] , [sJSTP].[step_id] AS [JobStartStepNo] , [sJSTP].[step_name] AS [JobStartStepName] , CASE WHEN [sSCH].[schedule_uid] IS NULL THEN 'No' ELSE 'Yes' END AS [IsScheduled] , [sSCH].[schedule_uid] AS [JobScheduleID] , [sSCH].[name] AS [JobScheduleName] , CASE [sJOB].[delete_level] WHEN 0 THEN 'Never' WHEN 1 THEN 'On Success' WHEN 2 THEN 'On Failure' WHEN 3 THEN 'On Completion' END AS [JobDeletionCriterion] FROM [msdb].[dbo].[sysjobs] AS [sJOB] LEFT JOIN [msdb].[sys].[servers] AS [sSVR] ON [sJOB].[originating_server_id] = [sSVR].[server_id] LEFT JOIN [msdb].[dbo].[syscategories] AS [sCAT] ON [sJOB].[category_id] = [sCAT].[category_id] LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sJSTP] ON [sJOB].[job_id] = [sJSTP].[job_id] AND [sJOB].[start_step_id] = [sJSTP].[step_id] LEFT JOIN [msdb].[sys].[database_principals] AS [sDBP] ON [sJOB].[owner_sid] = [sDBP].[sid] LEFT JOIN [msdb].[dbo].[sysjobschedules] AS [sJOBSCH] ON [sJOB].[job_id] = [sJOBSCH].[job_id] LEFT JOIN [msdb].[dbo].[sysschedules] AS [sSCH] ON [sJOBSCH].[schedule_id] = [sSCH].[schedule_id] ORDER BY [JobName]
SQL Server에서 실행중인 작업을보고 싶습니다. 실행중인 작업이 없으면 에이전트를 중지하십시오. – Sami
- 1. 응용 프로그램이 실행되고 있지 않을 때 Android에서 서비스를 중지하는 방법.
- 2. 응용 프로그램이 실행되고 있지 않을 때 자동으로 프로세스 활성화
- 3. 작업이 예정대로 실행되고 있지 않습니다.
- 4. 작업이 실행되고 있지 않습니까?
- 5. 작업이 실행되고 있지 않습니다. 가능한
- 6. 예약 된 SQL 작업이 실행되고 있지 않습니다.
- 7. 작업이 백그라운드에서 실행되고 있지 않음
- 8. 응용 프로그램이 실행되고 있지 않을 때 BroadcastReceiver
- 9. d3/Javascript 애니메이션이 실행되고 있지 않을 때
- 10. 앱이 실행되고 있지 않을 때 알림 만들기
- 11. 작업이 순차적으로 실행되고 있지 동시에
- 12. 백그라운드 작업이 실행되고 있지 않습니다.
- 13. 허드슨 작업이 실행되고 있지 않습니다
- 14. Talend 작업이 실행되고 있지 않습니다.
- 15. 크론 작업이 실행되고 있지 않습니다. Laravel 5.3
- 16. 앱이 백그라운드에서 실행되고 있지 않을 때 푸시 알림을 처리하는 방법
- 17. 스파크 정리 작업이 실행되고 있지 않음
- 18. 내 페이지가 활성화되어 있지 않을 때 jquery 애니메이션을 중지하는 방법
- 19. 컨테이너가 실행되고 있지 않을 때 포트를 사용하는 도커 프록시
- 20. SSIS. 작업이 실행되고 있지 않은지 확인하십시오.
- 21. cpanel 서버에서 cron 작업이 실행되고 있지 않습니다.
- 22. Ember는 뛰어난 비동기 작업이 실행되고 있지 않을 때 알 수있는 훅을 제공합니까?
- 23. 개미 "자바"작업이 실행되고 있지 않습니다
- 24. 사용자 지정 작업이 실행되고 있지 않습니다.
- 25. Laravel Cron 작업이 실행되고 있지 않습니다.
- 26. 레일스 : 예약 된 작업이 실행되고 있지 않습니다.
- 27. Ruby Cron 작업이 실행되고 있지 않습니까?
- 28. 공유 호스트가 SQL 에이전트를 표시하지 않을 때 작업 생성 방법
- 29. 리눅스 크론 작업이 실행되고 있지 않다
- 30. Oracle DBMS 작업이 실행되고 있지 않음
** 일부 매 2 분 **, 그래서 당신은 ** 그것을 중단하고 ** 다시 시작해야합니다 ** 2 분마다? – Sami