Расписание служб SSIS и перезапуск выполнения пакета

В C ++ 11 тесты SFINAE стали намного красивее. Вот несколько примеров общих применений:

Выберите перегрузку функции в зависимости от признаков

template
std::enable_if_t::value> f(T t){
    //integral version
}
template
std::enable_if_t::value> f(T t){
    //floating point version
}

Используя так называемую икону sink типа, вы можете делать довольно произвольные тесты типа проверяя, имеет ли он член, и если этот элемент имеет определенный тип

//this goes in some header so you can use it everywhere
template
struct TypeSink{
    using Type = void;
};
template
using TypeSinkT = typename TypeSink::Type;

//use case
template
struct HasBarOfTypeInt : std::false_type{};
template
struct HasBarOfTypeInt().*(&T::bar))>> :
    std::is_same().*(&T::bar))>::type,int>{};


struct S{
   int bar;
};
struct K{

};

template>
void print(T){
    std::cout << "has bar" << std::endl;
}
void print(...){
    std::cout << "no bar" << std::endl;
}

int main(){
    print(S{});
    print(K{});
    std::cout << "bar is int: " << HasBarOfTypeInt::value << std::endl;
}

Вот живой пример: http://ideone.com/dHhyHE Я также недавно написал весь раздел о SFINAE и отправке тегов в моем блоге (бесстыдный плагин, но релевантный) http://metaporky.blogspot.de/2014/08/part-7-static-dispatch-function.html

Обратите внимание, что с C ++ 14 есть std :: void_t, который по существу совпадает с моим TypeSink здесь.

1
задан Eduardo Almeida 18 January 2019 в 14:45
поделиться

1 ответ

На шаге задания выполните пакет из каталога служб SSIS с помощью T-SQL и добавьте условие, чтобы проверить, активен ли уже пакет. В приведенном ниже примере catalog.executions DMV запрашивается для пакета с заданным именем со статусом 2, который представляет текущий запущенный пакет. Если этот пакет уже найден активным, то ничего не делается, в противном случае он выполняется из хранимой процедуры catalog.start_execution.

IF NOT EXISTS(SELECT EXECUTION_ID FROM SSISDB.CATALOG.EXECUTIONS WHERE PACKAGE_NAME = 'YourPackage.dtsx' 
AND PROJECT_NAME = 'ProjectOfPackage' AND FOLDER_NAME = 'Folder Containing Package' AND [STATUS] = 2)
BEGIN 

DECLARE @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'YourPackage.dtsx', @execution_id=@execution_id OUTPUT, 
@folder_name=N'Folder Containing Package', @project_name=N'ProjectOfPackage'

DECLARE @var0 smallint = 2
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,  @object_type=50, 
@parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0

EXEC [SSISDB].[catalog].[start_execution] @execution_id

END
0
ответ дан userfl89 18 January 2019 в 14:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: