2016-12-20 2 views
0

Есть ли способ сделать пакет (который будет оболочкой) запускать каждую минуту в агенте SQL Server, даже если он уже выполняется из предыдущего выполнения. Кажется, агент SQL Server не запускается, если он уже запущен. Есть ли способ отменить это поведение?Запуск запуска агента агента 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

Hm, это поведение SQL Jobs стандартно для MS SQL Server и не может быть изменено. Для вашей ситуации, если вы находитесь на SQL 2012 и выше, вы можете использовать новый SSIS-каталог с асинхронным исполнением. Используя это, ваша работа начнет выполнение пакета и прекратит работу; поэтому вы можете начать его через минуту. Недостаток - статус задания будет показывать только, был ли запущен пакет и что ничто на его результате; вам нужно выполнить контроль выполнения самостоятельно.
Для перехода на выполнение пакета async требуется SSIS 2012+, устанавливающая базу данных каталога служб SSIS, переключение пакетов на модель развертывания проекта. В конце концов, создайте SQL Job для запуска пакета, укажите все необходимые соединения и параметры, сохраните его. Затем в контекстном меню выберите Работа с сценарием как -> DROP и CREATE to -> Окно редактора новых запросов. В тексте запроса - найти подстроку

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

и переключить его на

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

Затем запустите скрипт обновления своей работы.
Это странное манипулирование сценарием необходимо, поскольку по умолчанию SQL Job выполняет пакет синхронно и не раскрывает параметр async в пользовательском интерфейсе.

Смежные вопросы