我有一个SSIS程序包,该程序包在本地运行时没有错误。然后将其部署到目录并在SQL Agent作业中运行。从功能上讲,该作业可以正确运行,并且所有数据都在应有的位置,但是它总是会消除此错误:
变量“ TextMaxDate”的表达式评估失败。表达式中有错误。
我无法找到更有意义的消息。 SSIS程序包具有三个变量...
TextMaxDate
DateTime
@[User::TextMaxDate]
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() ) + "'"
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() ) + "'"
并遵循此流程...
执行SQL任务
select max(cast(created_date as date)) MaxDate from DEST_SCHEMA.table_1
。 MaxDate
,将变量名称设置为User::TextMaxDate
数据流任务(Oracle Attunity驱动程序)
@[User::TextSQL_NoContent]
TEXT
列,因此对于每个插入的记录,该列为null。数据流任务(OLE DB源编辑器)
SQL command from variable
User::TextSQL_Content
执行SQL任务
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
为什么会发生此错误?
答案 0 :(得分:1)
为什么要编写一个表达式来设置@[User::TextMaxDate]
= @[User::TextMaxDate]
!
只需删除表达式并将EvaluateAsExpression设置为False
。还要确保
select max(cast(created_date as date)) MaxDate from DEST_SCHEMA.table_1
正在返回一个值。