У меня есть ситуация, в которой таблица фактов загружается каждый день.
Есть два пакета служб SSIS, которые загружают эту таблицу.
1) Package1_FullLoad.dtsx - запускается каждое воскресенье, сполное обновление
2) Package2_DailyLoad.dtsx - запускается во все дни, кроме воскресенья, удаляет и загружает данные только за последние 14 дней.
Теперь пакет с полной загрузкой (Package1_FullLoad.dtsx)) имеет задачу «Выполнение SQL», обрезает все строки таблицы фактов.
Затем поток данных загружает таблицу фактов с нуля.
В этом случае начинается значение идентификатора таблицы фактов.от 1 и увеличивается на 1, и это нормально, без проблем.
Однако для пакета ежедневной загрузки (Package2_DailyLoad.dtsx) после оператора DELETE (который удаляет данные только за последние 14 дней),в задаче «Выполнение SQL» я устанавливаю этот код:
DBCC CHECKIDENT ('dbo.FactTable', RESEED, 1) DBCC CHECKIDENT ('dbo.FactTable', RESEED)
Затем я запускаюпоток данных для загрузки тДанные, в которые вставляются только данные, соответствующие прошедшим 14 дням.
Скажем, в таблице фактов есть 10 строк после полной загрузки (возьмем в качестве примера, чтобы лучше проиллюстрировать ситуацию), и 3 удаляются сегодняи 5 должны быть вставлены сегодня (вставка и удаление должны выполняться с помощью ежедневного пакета загрузки сегодня), новое значение идентификатора должно начинаться с 8 и заканчиваться на 12. Вместо этого я вижу новое значение идентификатора, начинающееся с 11 и заканчивающееся на 15.
Я не вижу никакого влияния в этом коде DBCC в задаче SSIS «Выполнение SQL».
Этот код DBCC прекрасно работает в SSMS на стороне базы данных.
Любая идея окак решить эту проблему?