Я сделал пакет ssis, в котором я сделал поток данных для дополнительных данных. IP-адреса исходного и конечного серверов различны. Ниже вы можете найти блок-схему моего пакета Схема управления
Диаграмма потока данных
пакет работает нормально.
В задаче «Выполнение SQl»: - управляет таблицей журналов и запускает добавочную задачу.
запрос, который я использовал: -
insert into audit_log (
Packagename,
process_date,
start_datetime,
end_datetime,
Record_processed,
status
)values('CRM-TO-TRANSORGDB',null,GETDATE(),null,null,null);
select MAX(ID) as ID,MAX(process_date) as proc_date from audit_log where Packagename ='CRM-TO-TRANSORGDB' ;
сохранить идентификатор и proc_date в переменной.
в задаче Execute SQl 1: - просто обновить таблицу журнала.
UPDATE audit_log
SET
process_date=?,
end_datetime = GETDATE(),
status='SUCCESS'
record_processed=?
WHERE (packagename = 'CRM-TO-TRANSORGDB') AND ID=? ;
это запрос, который мы использовали для обновления таблицы журнала.
В потоке данных просто извлеките все записи и поместите их в таблицу назначения.
это все, что я сделал.
Но мой вопрос:
1) Как сравнить итого нет. количество строк из исходной таблицы в таблицу назначения в пакете ssis.
2) если он не совпадает, он автоматически перезапустит мою задачу.
@ Томас, согласно вашей инструкции, я сделал следующее:
1) Я сделал задачу «Выполнить SQl» для источника и места назначения.
2) и добавьте задачу «Выполнение пакета» и добавили условие для несоответствия счетчику.
и добавил выражение для проверки row_count_src! = Row_count_dest
и в Source_table_count я использовал следующий запрос:
select count(SubOrderID) as row_count_src from fact_suborder_journey
WHERE Suborderdate between '2016-06-01' and GETDATE()-1 ;
в dest_table_count я использовал следующий запрос:
select count(SubOrderID) as row_count_dest from fact_suborder_journey
WHERE Suborderdate between '2016-06-01' and GETDATE()-1 ;
Я добавил две переменные как int64 в этом пакете ssis. и карту в наборе результатов ниже вы можете найти рис, что я сделал.
но После всего этого я получаю эту ошибку:
[Выполнение задачи SQL] Ошибка: произошла ошибка при назначении значения переменной "row_count_src": "Тип значения, назначаемого переменной" User :: row_count_src ", отличается от текущего типа переменной. Переменные могут не изменить тип во время выполнения Типы переменных являются строгими, за исключением переменных типа Object.
».