SSIS SQL Server代理启动作业已在运行

时间:2016-12-20 01:29:09

标签: sql-server ssis parallel-processing agent

是否有任何方法可以在SQL Server代理中每分钟运行一个包(它将是一个包装器),即使它已经从先前的执行运行。如果已经运行,似乎SQL Server代理程序无法启动。有没有办法覆盖这种行为?

我想做点什么,比如

Wrapper.dtsx
   --> read from table of packages to run, and select next in line
   --> execute package task with the package dynamically set from previously 
       selection
   --> exit

表有以下包(假设最终会存在一些排名)

   a.dtsx (say runs for 5 mins)
   b.dtsx (say runs for 4 mins)
   c.dtsc (say runs for 6 mins)

   12:01 am a.dtsx is executed
   12:02 am b.dtsx is executed
   12:03 am c.dtsx is executed

此刻我只能得到以下内容

   12:01 am a.dtsx is executed
   12:06 am b.dtsx is executed
   12:10 am c.dtsx is executed

1 个答案:

答案 0 :(得分:0)

嗯,此SQL作业行为是MS SQL Server的标准行为,无法更改。对于您的情况,如果您使用的是SQL 2012及更高版本,则可以使用具有异步执行的新SSIS目录。通过使用它,您的工作将启动包执行并退出;因此,您可以在一分钟内自由启动它。缺点 - 工作状态只会显示包装是否已经开始,结果是什么;你必须自己进行执行监控 切换到异步包执行需要SSIS 2012+,建立SSIS目录数据库,将包切换到Project部署模型。毕竟,创建SQL作业以启动包,指定所有需要的连接和参数,保存它。然后使用上下文菜单选择 Script Job as - > DROP和CREATE to - >新查询编辑器窗口。在查询文本中 - locate substring

/Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True  

并将其切换为

/Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";False  

然后运行脚本更新你的工作 这种奇怪的脚本操作是必需的,因为默认情况下SQL Job会同步执行包,并且不会在用户界面中显示异步选项。