У меня есть преобразование условного разбиения потока данных служб SSIS, которое возвращает результат> =, когда оно должно возвращать> результат.
С самого начала ... Мой пакет служб SSIS выполняет задачу SQL, которая хранит max (дату) из одной таблицы в переменной User :: max_date типа DateTime, имеющей область действия пакета.
Мой пакет затем приступает к выполнению задачи «Поток данных», в которой имеется условное преобразование разбиения с условием date > @[User::max_date]
. Результирующий набор всегда представляет собой одну строку, значение DateTime которой равно User :: max_date, то есть возвращает строку, содержащую max (date), если не было добавлено больше строк с более поздними датами, чем max (date). Что является неожиданным поведением.
Более того, другие выходные данные условного разбиения неверны - это все строки с date < @[User::max_date]
, а не все строки с date <= @[User::max_date]
, как и следовало ожидать.
Почему это происходит?
Обновление:
Я понял, как это происходит, но не почему. User::max_date
хранит DateTime, и мое значение date
из моей задачи Data Flow равно DT_DBTIMESTAMP
. При сравнении их с DATEDIFF(..)
они различаются только в миллисекундах и дальше.
Так что я могу обойти эту проблему, но я понятия не имею, почему это будет реализовано таким образом.
Комментарии