求助:SQLserver 多个job 传参调同一个SP, SP里有临时表,并在头尾做drop操作。 当两个job一前一后运行,先运行的那个会失败怎么避免
我在SQL server里面有四个job 分别为ATP,UNC,UNE,UNA,它们都要调用到同一个srore procedure 名为SD_load,只是这个4个job调用的时候给SP传了不同的参数(参数分别为ATP,UNC,UNE,UNA)。
Sp是这样的,里面用到很多临时表,有些是局部的有些是全局的。但在一开始都有drop的操作来确保因为上一步失败或者server问题而留着的临时表全部清除。之后就是建临时表和导数据(这个过程比较复杂,临时表出现的次数超过100次)最后插入到目标表里。
现在问题来了,这样的话这四个job 必须得分开运行。假如在ATP还没完成的时候,UNC开始了,那UNC调用SP的时候第一步是drop 临时表,ATP就会因为找不到临时表而报错。
我能想到的解决方案是:
1. 从schedule方面,只有上一个完成了下一个才能开始
2. SP的一开始不drop 临时表。那对于全局临时表来说数据应该乱了吧
3. 对SP里面所有的临时表加传进来的参数作为后缀。。
由于业务原因1 不太好实现。2 也不安全。3我想实现起来会比较复杂,所有的query都要放在@SQL里面用EXEC 来执行,太麻烦了。
求助求助: 不知道各位大神有没有好的建议?谢谢!!