Выражение задания SQL Server для оценки переменной - PullRequest
2 голосов
/ 26 июня 2019

У меня есть пакет служб SSIS, который работает без ошибок локально. Затем он развертывается в каталоге и запускается в задании агента SQL. Функционально задание выполняется правильно, и все данные находятся там, где и должны быть, но всегда выдает эту ошибку:

Выражение для переменной «TextMaxDate» не прошло оценку. Произошла ошибка в выражении.

Мне не удалось найти более значимое сообщение. Пакет служб SSIS содержит три переменные ...

  1. TextMaxDate

    • Тип данных = DateTime
    • Выражение = @[User::TextMaxDate]
  2. TextSQL_Content

    • Тип данных = String
    • Выражение = "SELECT CREATED_DATE, ID, TEXT FROM SRC_SCHEMA.SRC_TABLE_1 WHERE CREATED_DATE BETWEEN '" + (DT_STR, 12, 1252)(DT_DBDATE) DATEADD("day",1,(DT_DBDATE)@[User::TextMaxDate]) + "' AND '" + (DT_STR, 25, 1252) (DT_DBDATE) DATEADD( "day", - 1 , (DT_DBDATE) GETDATE() ) + "'"
  3. TextSQL_NoContent

    • Тип данных = String
    • Выражение = "SELECT ID, CREATED, CREATED_BY, TEXT FROM SRC_SCHEMA.SRC_TABLE_1 WHERE CREATED_DATE BETWEEN '" + (DT_STR, 12, 1252)(DT_DBDATE) DATEADD("day",1,(DT_DBDATE)@[User::TextMaxDate]) + "' AND '" + (DT_STR, 25, 1252) (DT_DBDATE) DATEADD( "day", - 1 , (DT_DBDATE) GETDATE() ) + "'"

и следует за этим потоком ...

  1. Выполнить задачу SQL

    • SQLStatement установлен на select max(cast(created_date as date)) MaxDate from DEST_SCHEMA.table_1.
    • Набор результатов устанавливает для имени результата значение MaxDate и для имени переменной User::TextMaxDate
  2. Задача потока данных (драйвер Oracle Attunity)

    • В выражениях ... [Oracle Source]. [SqlCommand] установлено на @[User::TextSQL_NoContent]
    • Загружает данные в DEST_SCHEMA.TABLE_1, но не отображает столбец TEXT, чтобы он был пустым для каждой вставленной записи.
  3. Задача потока данных (редактор исходного кода OLE DB)

    • Режим доступа к данным установлен на SQL command from variable
    • Имя переменной установлено на User::TextSQL_Content
    • Загружает данные в DEST_SCHEMA.TABLE_2
  4. Выполнить задачу SQL

    • SQLStatement установлен на UPDATE DEST_SCHEMA.TABLE_1 SET DEST_SCHEMA.TABLE_1.TEXT b.TEXT from DEST_SCHEMA.TABLE_1 a join DEST_SCHEMA.TABLE_2 b on a.id = b.id where a.TEXT IS NULL

Почему возникает эта ошибка?

1 Ответ

1 голос
/ 27 июня 2019

Зачем писать выражение для установки @[User::TextMaxDate] = @[User::TextMaxDate] !!

Просто удалите выражение и установите для EvaluateAsExpression значение False. Также убедитесь, что

select max(cast(created_date as date)) MaxDate from DEST_SCHEMA.table_1 

возвращает значение.

...