与参数SSIS流ADO.net源任务(SSIS flow ADO.net source task w

2019-08-01 03:17发布

我使用的是ADO.NET源从ODBC服务器到我的SQL将数据。 我使用的导入和导出向导创建我的数据流任务。

我需要追加有场GPMTADDT例如新记录>(昨日日期),如果今天20121002下面的查询工作完美:

SELECT  PARTICIP.* 
FROM PARTICIP
WHERE GPMTADDT > 20121001

我试过了:

SELECT  PARTICIP.* 
FROM PARTICIP
WHERE GPMTADDT > Format(now(),"yyyymmdd")

但它不会工作,服务器将“格式”为一列。 我试图创建一个变量@date

SELECT  PARTICIP.* 
FROM PARTICIP
WHERE GPMTADDT > @date

服务器再次拒绝了“@”。

Also tried:
SELECT  PARTICIP.* 
FROM PARTICIP
WHERE GPMTADDT > (SELECT MAX PARTICIP.GPMTADDT FROM PARTICIP)

我相信,我失去了一些东西简单,帮助将不胜感激。

谢谢!

Answer 1:

你有没有尝试过:

SELECT PARTICIP.*
FROM PARTICIP
WHERE GPMTADDT > DATEADD(dd, -1, GETDATE())


Answer 2:

您还没有提到你的数据源其实是,但似乎有几个错误的SQL语法你试过。 例如,第一查询应该有大约日期单引号,最后一个应该把参数MAX()括号等。

但要尽量回答你的基本问题,ADO.NET源不支持参数,不像OLE DB那些事。 一些可能的解决方案是:

  1. 不要使用参数,如果你能生成源本身的价值; 这就是你想在你的最后一个例子可以做,什么杰夫建议
  2. 使用SSIS表达式来设置SqlCommand与SSIS可变连接对象的属性,一起(如所描述的在这里 )
  3. 作为替代#2,使用脚本任务,以构建完整的SELECT查询时,它分配给SSIS的变量,然后使用该变量作为SqlCommand价值

个人而言,我会说,选项1是最简单的,但当然不总是可能的,如果变量不是从源系统中访问。 2和3是在同一个解决方案的变化,但我更喜欢3,因为我觉得比使用表达式写剧本更容易。



文章来源: SSIS flow ADO.net source task with parameter