2014-02-11 5 views
0

У меня есть пакет в SSIS. Он имеет задачу выполнения sql, которая получает некоторые значения конфигурации из таблицы на другом сервере. Таким образом, пакет SSIS получает эти значения конфигурации и сохраняет их в переменных в SSIS. Эти переменные используются в дополнительных задачах sql в качестве параметров.Значения SSIS и NULL

Проблема, с которой я сталкиваюсь, некоторые из этих значений конфигурации являются нулевыми. Поэтому всякий раз, когда SSIS встречает нулевое значение для целочисленного типа, он преобразует это значение в 0 и передает его как 0 для дальнейшей задачи, а не передает его как null.

Если тип данных столбца - это дата и его значение равно нулю в в таблице конфигурации SSIS присваивает значение по умолчанию «12/30/1899 12:00:00 AM» и передает значение по умолчанию как параметр, а не нулевое значение.

Как сделать пакет SSIS переданным фактическим значением null, а не значением, преобразованным SSIS?

Спасибо заранее!

ответ

0

Я бы изменил тип данных всех переменных на String и изменил команду Execute SQL Task, чтобы вернуть строковые значения, например. используя CAST ... AS NVARCHAR (4000))

С переменными строк обычно легче работать.

+0

Спасибо за ответ Майк. Я заметил, что когда SSIS встречает нулевое значение в столбце varchar. Он преобразует это в пустую строку. Я не видел каких-либо параметров в SSIS, которые могут передавать значение null, а не преобразовывать его в значения по умолчанию. – user3297992

+0

С какой целью? Переменная SSIS не может содержать нулевое значение. Возможно, вам нужно передать другую переменную, например. Параметр_X_Is_Null со значениями Да или Нет. –

0

Как об использовании строк, как было упомянуто, а затем в задаче SQL попробовать «выбрать IsNull ([поле],„нулевой“)»

Это изменит все нулевые значения в строке «нуль».

Это своего рода хакерский способ сделать это, но это может сработать.

0

Существуют различные варианты. Один из них, вам нужно будет создать выражение, которое преобразует дату в нуль, а не к минимальному значению даты («1899-12-30») Пример

Выражения такого преобразования:

(DT_DATE)(REPORT_DATE ==(DT_DATE)"1899-12-30" ? NULL(DT_DATE) : REPORT_DATE) 
Смежные вопросы