我对SSIS相当陌生,并且不了解它的所有功能以及我可以用来做我想做的事情的任务。我发现了许多Google和stackoverflow.com搜索,以帮助我了解变量和参数以及如何设置它们等。
我有一个view
数据,我希望通过运行该程序包的作业将其导出到文件中。
数据将由LastUpdatedDate
字段过滤,数据类型为DateTimeOffSet(7)
。该软件包应允许用户使用指定的dat运行它或使用另一个表(SSISJobRun
)中的值。
/*Employee Table*/
Id int
Name varchar(255)
LastUpdatedDate datetimeoffset(7)
/*SSISJobRun Table*/
Id int
JobTypeId int
RunDate datetimeoffset(7)
目前,我正在使用SSDT for VS 2015来创建我的SSIS包并将它们部署到我的SSIS目录。
我有一个带有1个包的项目。该软件包包含:
Data Flow Task
的{{1}};此任务包含EmployeeExport
和OLE DB Source
所有这一切都完美无缺。
我还设置了另一个名为Flat File Destination
的包级别参数。目的是让谁/什么运行包来定义日期。但是,如果日期为LastUpdatedDate
(如果我决定使用null
)或日期是默认值string
(如果我决定使用1899-12-30 00:00:00
) ,我想确定使用的日期。
具体来说,如果用户没有提供实际日期,那么我希望日期是最新的date
。对于这种情况,我使用以下代码:
RunDate
我尝试了很多不同的方式,当我提供日期时它会起作用,但是当我使用字符串或默认时我给出的日期为空时我无法使用它使用了约会。
以下是我一直在寻找解决问题的一些消息来源
..还有更多。
最后一点注意:这个SELECT TOP 1 LastUpdatedDate
FROM SSISJobRun
WHERE JobTypeId = 1
ORDER BY LastUpdatedDate DESC
将用于运行两个任务,所以如果有办法让它保持全局,就会很棒。
最后,我需要打包以插入一行,指定任务何时运行到date
表中。
谢谢。
答案 0 :(得分:2)
使用Execute SQL Task
,粘贴
SELECT TOP 1 LastUpdatedDate
FROM SSISJobRun
WHERE JobTypeId = 1
ORDER BY LastUpdatedDate DESC
在语句中,并将结果设置为single row
,在Result
页面中,选择您设置的变量,并将index
更改为0
在同一个任务执行第二次之前(在任何foreach或for循环中)并且在包中的任何地方都没有使用之前,这个变量将保持相同的值。
如果您需要检查,请右键单击Execute SQL task
,Edit Breakpoints
至post execution
,然后运行包,从watch window
标签打开Debug
,拖动并将变量放入监视窗口,您应该看到值。