我想做类似的事情:

exec sproc1 and sproc2 at the same time
when they are both finished exec sproc3

我可以用dts做到这一点。 有没有办法在transact sql中做到这一点? 或者有没有办法使用批处理脚本(例如vbs或powershell)?

有帮助吗?

解决方案

sp _ start _ job

我现在正在做类似的事情,我发现避免使用SSIS或一些外部shell的唯一方法是手动将我的加载例程拆分为“线程”,然后触发一个主要的sqlagent作业反过来执行尽可能多的sp _ start _ job,因为我有线程。从那时起,它们都是自主运行的。

这不是我们正在寻找的,但结果是一样的。如果您测试子作业的作业状态,您也可以实现sproc 3的条件启动。

如果我们不能同时使用它们,那8个核心有什么意义呢?

其他提示

您可以创建一个CLR存储过程(使用C#)将在自己的线程上调用前两个,然后阻塞直到两个完成...然后运行第三个。

你能在你的情况下使用CLR sprocs吗?如果是这样,我将编辑此答案以获得更多详细信息。

您是否绝对需要并行执行两个SP?

在单个SP中使用简单的CRUD语句,我发现SQL S.在确定哪些可以并行运行方面做得非常好。我从未见过SQL S.并行运行2个SP如果从T-SQL语句顺序调用它们,甚至不知道它是否可能。

现在,DTS是否真的并行执行它们?它可以简单地按顺序执行它们,然后在最后一次成功完成后调用第3个SP。

如果它真的并行运行它们,可能你应该坚持使用DTS,但是如果我有一个DTS包调用,比如10个重载SP并行,我想知道它会怎么做......我可能我必须做一些测试来了解自己:D

您可以使用SSIS。这样做的好处是,软件包可以存储在SQL Server中,并可以在那里轻松安排。

从PowerShell或任何外部脚本语言,您可以使用SQL命令行osql或sqlcmd。此技术也可用于通过使用xp_cmdshell进行外壳来在SQL Server上进行调度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top