我有一个SSIS作业,我想从一个过程运行,然后,使用作业开始和作业结束日期执行一个select语句。
获得作业开始时间很简单 - 只需在调用作业之前保存当前时间即可。
我怎样才能结束时间?我可以使用@endTime = GETDATE()
吗?开始工作是否等待它结束?
一般来说,SQL程序中的调用是真的吗?
编辑: 正如人们所说,我想使用此代码调用SSIS作业,我发现here:
declare @execution_id bigint
exec ssisdb.catalog.create_execution
@folder_name = 'mssqltips'
,@project_name = 'exec-ssis-stored-proc-ssis-sample'
,@package_name = 'Sample.dtsx'
,@execution_id = @execution_id output
exec ssisdb.catalog.start_execution @execution_id
答案 0 :(得分:1)
这取决于您如何通过SP运行SSIS。它是一个sql代理作业还是包执行(目录)?
如果以包的形式运行它,它可以同步或异步运行。
如果它处于异步模式,SP只会启动SSIS包并且不会等待。
如果它处于同步模式,它将等待。
模式取决于SYNCHRONIZED参数。应该在执行开始之前设置此参数,请参阅下面的链接如何设置它。
如果从SP运行SQL作业并且该作业执行SSIS包,则SP不会等待,它只会激活SQL代理作业。
答案 1 :(得分:1)
SSIS已记录包执行持续时间和事件,包括步骤持续时间。您不需要使用LDFLAGS=-static
。
您可以查询SSISDB数据库的catalog.executions视图以检索执行状态,开始时间和结束时间,例如:
GETDATE()
或
select status, start_time, end_time,datediff(s,start_time,end_time) as duration
from catalog.executions
where execution_id = @execution_id
用于历史数据