반응형
동일한 작업
대상이 다른 동일한 작업을 동시에 내가 원하는 만큼만 관리해서 수행하고자 하는 경우에 해당됩니다. 서비스와 서버 부하를 고려하여 한번에 수행하지 않고 나눠서 수행해야 하는 경우 아래 방법을 사용하면 좋습니다. 아래 예는 robocopy를 이용하여 파일을 copy하는 작업을 나눠서 하는 경우를 보여주고 있습니다.

수행방법
아래 스크립트를 새로운 Job에 등록하고 5분 또는 자신이 원하는 주기로 모니터링처럼 스케쥴을 설정해 주면 됩니다.
Agent Job의 갯수를 6개가 넘지 않도록 확인하면서 AgetJob을 실행시켜주는 스크립트입니다.
declare @max_run_count int
declare @run_count int
--Max 실행 값을 6으로 설정
set @max_run_count =6
DECLARE @RunningJobs TABLE(
Job_ID UNIQUEIDENTIFIER,
Last_Run_Date INT,
Last_Run_Time INT,
Next_Run_Date INT,
Next_Run_Time INT,
Next_Run_Schedule_ID INT,
Requested_To_Run INT,
Request_Source INT,
Request_Source_ID VARCHAR(100),
Running INT,
Current_Step INT,
Current_Retry_Attempt INT,
State INT )
INSERT INTO @RunningJobs EXEC master.dbo.xp_sqlagent_enum_jobs 1,garbage
--현재 실행 중인 Job 파악
SELECT
@run_count=COUNT(JSR.Job_ID)
FROM @RunningJobs JSR
JOIN msdb.dbo.sysjobs
ON JSR.Job_ID=sysjobs.job_id
WHERE Running=1
PRINT @run_count
--현재 실행 중인 Job과 Max 실행 값을 비교
if (@run_count<@max_run_count)
begin
declare @job_name varchar(100)
declare srvcur cursor local fast_forward
for
--현재 실행 중인 작업 외에 Max 여유분까지의 수량만큼 Job 추출
SELECT top (@max_run_count-@run_count) j.name
FROM msdb.dbo.sysjobs AS j
WHERE name LIKE '(ROBOCOPY)%'
AND NOT EXISTS (
SELECT *
FROM msdb.dbo.sysjobhistory AS jh
WHERE jh.job_id=j.job_id
AND jh.run_status=1
AND CONVERT(VARCHAR,jh.run_date,112)=CONVERT(VARCHAR,GETDATE(),112)
--오늘 수행한 작업이고 성공했으면 제외
)
AND NOT EXISTS (SELECT
JSR.Job_ID
FROM @RunningJobs JSR
WHERE Job_ID=j.job_id AND Running=1
--현재 실행 중인 작업 제외
) ORDER BY j.name desc
open srvcur
declare @srvname varchar(100)
fetch from srvcur into @job_name
while @@fetch_status = 0
begin
--대상 Job Start
exec msdb.dbo.sp_start_job @job_name
fetch from srvcur into @job_name
end
close srvcur
deallocate srvcur
end
반응형
'MSSQL' 카테고리의 다른 글
SQL Reporting Server Delete Encrypted Content (0) | 2024.09.12 |
---|---|
MSSQL Edition Downgrade (Developer Edition) (0) | 2024.09.12 |
SQL Server 구성 관리자를 찾을 수 없는 경우 (0) | 2024.09.11 |
MSSQL : SSMS(Sql Server Management Studio) 단축키 설정하기 (0) | 2024.06.21 |
MSSQL : MSCS 환경에서 AddNode 설치 파일 로딩 안될 경우 (0) | 2024.05.17 |