Я разрабатываю SSIS-пакет, который должен запросить (выполнить SP) исходную базу данных для поколений, а затем вставить эти поколения в базу данных назначения.
Для этого мне нужно составить парупроверок: генерация из исходной БД уже существует в целевой базе данных?Если нет, просто вставьте его.Если он существует, обновлялся ли он с момента последней вставки (иначе: LastModified отличается от того же поколения в DestinationDB)?Если нет, просто оставь это.Если это так, обновите Generation in Destination DB.
Проблема, с которой я сталкиваюсь, связана с соответствующими данными.Не только Поколение должно быть вставлено, но каждый связанный элемент должен быть вставлен также в таблицы Пункта назначения (например, Оборудование, Упаковки, ...).
Поскольку База данных является базой данных только для чтенияэто было легко достигнуто удалением поколения (которое каскадно относится к другим таблицам), а затем вставкой поколения снова.Все работало нормально.
Теперь следующим шагом является включение транзакций в этот рабочий процесс (когда я что-то удаляю, мне нужно вставить новые данные. Если это не удается, все нужно откатить).Я установил уровень изоляции пакета на Serializable, а TransactionOption на Required.Для DestinationConnection для RetainSameConnection установлено значение True.
Всякий раз, когда я пытаюсь отладить свой пакет с теми же данными, которые работали раньше, я получаю следующее сообщение об ошибке:
Указан несовместимый контекст транзакциидля сохраненного соединения.Это соединение установлено в другом контексте транзакции.Сохраненные соединения могут использоваться только в одном контексте транзакции.
По моему мнению, это потому, что я пытаюсь удалить все данные, а затем снова вставить их в ту же транзакцию.SSIS, вероятно, хочет использовать другие соединения (RetainSameConnection, установленный в False, решает проблему), но это не то, что я имел в виду, если только одно неуспешное соединение не вызывает откат другого (но я читал, что это не так)...).
Может кто-нибудь помочь направить меня в правильном направлении?Любая помощь приветствуется.
Спасибо!