2016-12-20 5 views
0

패키지가 이전 실행에서 이미 실행 중이어도 SQL Server 에이전트에서 매분마다 실행되는 패키지 (래퍼가 될 수있는 방법)가 있습니까? 이미 실행 중이면 SQL Server 에이전트가 실행되지 않는 것 같습니다. 이 동작을 무시할 수있는 방법이 있습니까? SSIS SQL Server 에이전트 시작 작업이 이미 실행 중입니다.

나는

Wrapper.dtsx 
    --> read from table of packages to run, and select next in line 
    --> execute package task with the package dynamically set from previously 
     selection 
    --> exit 

테이블 등의 일을하고 싶어 난 단지 얻을 수있는 순간에 다음과 같은 패키지 (결국 존재하는 몇 가지 순위를 가정)

a.dtsx (say runs for 5 mins) 
    b.dtsx (say runs for 4 mins) 
    c.dtsc (say runs for 6 mins) 

    12:01 am a.dtsx is executed 
    12:02 am b.dtsx is executed 
    12:03 am c.dtsx is executed 

있다 다음이 발생할 때

12:01 am a.dtsx is executed 
    12:06 am b.dtsx is executed 
    12:10 am c.dtsx is executed 

답변

0

흠,이 SQL 작업 동작은 MS SQL Server의 표준 동작이며 변경할 수 없습니다. SQL 2012 이상을 사용하는 경우 상황에 따라 새 SSIS 카탈로그를 비동기 실행과 함께 사용할 수 있습니다. 이 작업을 사용하면 패키지 실행이 시작되고 종료됩니다. 그러므로 당신은 1 분 안에 자유롭게 시작할 수 있습니다. 단점 - 작업 상태는 패키지가 시작되었는지 여부와 결과에 아무 것도 표시하지 않습니다. 당신은 스스로 모니터링을 실행해야합니다.
비동기 패키지를 실행하려면 SSIS 2012 이상이 필요하며 SSIS 카탈로그 DB를 설정하고 패키지를 Project 배포 모델로 전환해야합니다. 결국 SQL 작업을 만들어 패키지를 시작하고 필요한 모든 연결과 매개 변수를 지정하고 저장하십시오. 그런 다음 컨텍스트 메뉴에서 스크립트 작업 -> DROP을 선택하고 -> 새 쿼리 편집기 창으로 작성하십시오. 쿼리 텍스트에서 -

/Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True 

하위 문자열을 찾은 후 작업을 업데이트하는 스크립트를 실행

/Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";False 

로 전환.
기본적으로 SQL Job은 패키지를 동 기적으로 실행하고 사용자 인터페이스에 async 옵션을 표시하지 않기 때문에이 이상한 스크립트 조작이 필요합니다.