是否有任何方法可以在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
答案 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会同步执行包,并且不会在用户界面中显示异步选项。