如何获取sql作业中step1到step2的值
我需要创建一个 SQL 作业。
第1步: 在 TaskToProcess 表中插入一行并返回 ProcessID(PK 和 Identity)
第 2 步: 检索在步骤1中生成的ProcessID,并将该值传递给SSIS包并执行SSIS包。
这在 SQL Server JOB 中可能吗?
请帮助我
提前致谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
没有在作业步骤之间传递变量值的内置方法。但是,有一些解决方法。
一种选择是在步骤 1 结束时将值存储在表中,并在步骤 2 中从数据库中查询它。
听起来您是通过插入表并返回
ProcessID
来生成ProcessID
插入行的 code>SCOPE_IDENTITY()。如果作业步骤 1 是插入此表的唯一进程,您可以使用IDENT_CURRENT('')
函数。编辑
如果多个流程可以插入到您的流程控制表中,那么最好的解决方案可能是将步骤 1 和 2 重构为单个步骤 - 可能使用控制 SSIS 主包(或其他等效技术),该包可以在步骤之间传递变量。
There is no built-in method of passing variable values between job steps. However, there are a couple of workarounds.
One option would be to store the value in table at the end of step 1 and query it back from the database in step 2.
It sounds like you are generating
ProcessID
by inserting into a table and returning theSCOPE_IDENTITY()
of the inserted row. If job step 1 is the only process inserting into this table, you can retrieve the last inserted value from job 2 using theIDENT_CURRENT('<tablename>')
function.EDIT
If multiple process could insert into your process control table, the best solution is probably to refactor steps 1 and 2 into a single step - possibly with a controlling SSIS master package (or other equivalent technology) which can pass the variables between steps.
类似于 Ed Harper 的答案,但在“作业步骤中的变量”MSDN 论坛主题
进程键控表在文章“如何在存储过程之间共享数据”
另一条建议 中进行了描述在 将参数发送到 SQL Server 代理作业/作业步骤 MSDN 论坛主题创建一个表来保存参数,例如:
Similar to Ed Harper's answer, but some details found in "Variables in Job Steps" MSDN forum thread
The Process-Keyed Tables are described in article "How to Share Data between Stored Procedure"
Another suggestion in Send parameters to SQL server agent jobs/job steps MSDN forum thread to create a table to hold the parameters, such as: