Sql server 2008 如何在sql作业中获取步骤1到步骤2的值
我需要创建一个SQL作业 步骤1: 在TaskToProcess表中插入一行并返回ProcessID(主键和标识) 第二步: 检索在步骤1中生成的ProcessID,并将值传递给SSIS包并执行SSIS包 这在SQL server作业中可能吗 请帮我做这个Sql server 2008 如何在sql作业中获取步骤1到步骤2的值,sql-server-2008,ssis,sql-job,Sql Server 2008,Ssis,Sql Job,我需要创建一个SQL作业 步骤1: 在TaskToProcess表中插入一行并返回ProcessID(主键和标识) 第二步: 检索在步骤1中生成的ProcessID,并将值传递给SSIS包并执行SSIS包 这在SQL server作业中可能吗 请帮我做这个 提前感谢。没有在作业步骤之间传递变量值的内置方法。然而,有几个变通办法 一种选择是在步骤1结束时将值存储在表中,并在步骤2中从数据库中查询回来 听起来像是通过插入表并返回插入行的SCOPE\u IDENTITY()来生成ProcessID。如
提前感谢。没有在作业步骤之间传递变量值的内置方法。然而,有几个变通办法 一种选择是在步骤1结束时将值存储在表中,并在步骤2中从数据库中查询回来 听起来像是通过插入表并返回插入行的
SCOPE\u IDENTITY()
来生成ProcessID
。如果作业步骤1是插入此表的唯一进程,则可以使用函数从作业2中检索上次插入的值
编辑
如果可以将多个进程插入到进程控制表中,最好的解决方案可能是将步骤1和2重构为单个步骤-可能使用控制SSIS主包(或其他等效技术),该主包可以在步骤之间传递变量。类似于,但在
对于作业环境,一些风格的进程键控表(使用
作业(id)或全局临时表似乎最有用。当然
我意识到你可能不想在“全球”留下一些东西
可用。如有必要,您还可以研究加密或
混淆存储的值。请确保删除该行一次
你已经用过了
文章“”中描述了进程键控表
MSDN论坛线程中的另一个建议是创建一个表来保存参数,例如:
CREATE TABLE SQLAgentJobParms
(job_id uniqueidentifier,
execution_instance int,
parameter_name nvarchar(100),
parameter_value nvarchar(100),
used_datetime datetime NULL);
调用存储过程将获取传递给它的参数
并将它们插入SQLAgentJobParms。之后,它可以使用EXEC
启动作业。而且,如前所述,作业步骤将从
SQLAgentJobParms以获取必要的值
是的,这会有用的。。但是,如果任何其他进程(不是此作业)在步骤1和步骤2之间向表中插入一行,该怎么办?我的整个过程将不同,对吗?@VinnaKanna-是的,如果在步骤1和步骤2之间的表中插入另一个过程,那么步骤2将获取错误的值。另一种替代方法请参见我的编辑。是的,我喜欢您在编辑部分给出的解决方案。。谢谢,但到目前为止,我知道我们仍然可以在job中的步骤1中捕获返回的值Step2@VinnaKanna-如果步骤1和2从SSIS包运行,您应该能够将步骤1中的值返回到控制包中的变量中。