Вопрос
Мне нужна помощь с пакетом SSIS.У меня есть сервер, который заполняет таблицу БД в рамках повседневной работы.Затем сервер записывает в таблицу состояния процесса, чтобы сообщить мне, что все готово.
Таблица состояний процесса выглядит следующим образом:
Job | Ready | Downloaded
myJob True False
Я хочу создать процесс, который проверит, имеет ли флаг готовности в моем задании значение True и продолжит работу, а если False, он будет спать в течение 30 минут, прежде чем повторить попытку и повторить до 5 раз.
Я нашел эту статью о том, как сделать спальную часть:http://blogs.conchango.com/jamiethomson/archive/2006/10/23/SSIS_3A00_-Put-a-package-to-sleep.aspx
Я думал об использовании задачи файловой системы для доступа к таблице состояния процесса.Затем установите для переменной значение флага Готово.Затем создайте контейнер цикла For, если true выйдите из цикла for и продолжите, а если false, запустите спящий режим, затем запустите другую задачу файловой системы и установите для переменной значение флага Ready.Главный вопрос, который у меня возникает: как установить для переменной значение флага готовности?
Решение 2
Я смог это понять.
Я использовал задачу потока данных с источником OLE DB и компонентом сценария внутри.Компонент сценария считывает и обрабатывает данные базы данных, выполняет базовую логику if else и записывает в системную переменную.
- Запись в переменную из руководства по компонентам скрипта:"http://blogs.conchango.com/jamiethomson/archive/2006/07/18/SSIS_3A00_-But-it-used-to-work-in-DTS-_2800_7_2900_-2D00-Захват значения из насоса данных в переменную.aspx"
Позже я использую эту системную переменную в цикле for.
Другие советы
Если у вас есть контейнер For Loop, вы можете поместить " ExecuteSql " Задача для извлечения значения вашего статуса (то есть false), а затем используйте " ScriptTask " хранить его или манипулировать им по мере необходимости. Затем вы можете продолжить обработку содержимого вашего контейнера цикла for (это может быть задача потока данных или что вы когда-либо использовали). Р>