sql – 如何传递ADO.NET源SSIS中的参数
你好我需要一些帮助这将是我的第一个SSIS包,我正在学习.到目前为止,这是我所拥有的.
我创建了一个控制流程.然后我创建了三个ADO.Net连接,两个源和一个目的地.然后,我创建了数据流任务,它将数据从一个数据库中的表复制到同一服务器上另一个数据库中的对应表中.数据流任务具有2个ADO NET Source和ADO NET Destination.目的地只是将字段映射到一起. 好的,到目前为止这么好.这是我的问题.一些源查询具有日期标准.一个例子是: SELECT --Code Here WHERE CONVERT(varchar,call_date,112) BETWEEN '6/1/2013' AND '7/1/2013' 我想用变量替换这些硬编码的日期.就像是: WHERE CONVERT(varchar,112) BETWEEN STARTDATE AND ENDATE 我已经阅读了几篇文章,并尝试着做正在描述的内容,但它并没有下沉.所以请用我的例子告诉我如何做到这一点.这将是很好,如果我可以有包提示我的日期,当我运行它,但我会很高兴只是为了学习如何传递一个变量到查询. 这是我唯一的解决方案,因为我只是SSIS包中的初学者,希望有人可以帮助我 解决方法因为这里没有一个答案实际上回答了问题(注意ADO.NET源码,而不是OLE DB!),这是真正的答案.在SSIS中,您无法参数化ADO.NET源.您必须使用解决方法. 幸运的是,几乎没有解决办法.一个将创建脚本组件,其行为像源代码一样.然而,不能总是轻松地将现有资源转换为脚本,特别是当他缺少ADO.NET编程知识时. 还有另一种解决方法,那就是在ADO.NET Source采取行动之前创建SQL Query.但是,当您打开ADO.NET源时,您会注意到数据访问模式不允许变量输入.那么,你如何进行 您想要动态设置ADO.NET源的SQL表达式,因此您必须通过使用Expression来告诉您的数据流任务来配置SSIS ADO.NET源组件. 为了使长篇小说(或不是很短的:),请执行以下操作: >在您的包中,使用源/目标组件输入数据流任务 date / datetime参数的最后一步可能有点麻烦.但是,为了方便起见,以下为例: "SELECT * FROM YOUR_SOURCE_TABLE WHERE your_date_column = '" + (DT_WSTR,4)YEAR(@[User::VAR_CONTAINING_DATE]) + "-" + (DT_WSTR,2)MONTH(@[User::VAR_CONTAINING_DATE]) + "-" + (DT_WSTR,2)DAY(@[User::VAR_CONTAINING_DATE]) + "'" HTH (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |