嗯,非常具体。 我有一份执行SSIS包的工作。这个包有一个名为" Email"这是一个字符串。
我通过存储过程执行此作业。我需要将该变量的值传递给作业,我该怎么做?
这是我用来执行作业的存储过程(@VarValue是我想传递给SSIS包的值):
USE [DevDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spChecklistEmail]
@JobName [nvarchar](100),
@VarValue [nvarchar](255),
@ReturnValue [int] OUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @JobId binary(16);
DECLARE @job_status INT
SELECT @JobId = job_id FROM msdb.dbo.sysjobs WHERE (name = @JobName);
SELECT @job_status = [dbo].[fn_GetJobStatus](@JobName);
IF (@job_status IN (2, 4))
BEGIN
SET @ReturnValue=@job_status;
END
ELSE
BEGIN
IF (@JobId IS NOT NULL)
BEGIN
EXEC @ReturnValue=msdb.dbo.sp_start_job @job_id=@JobId;
END
ELSE
BEGIN
SET @ReturnValue=-2;
END
END
RETURN (@ReturnValue)
END
答案 0 :(得分:0)
没有任何真正简单的方法可以做到这一点。我唯一能想到的就是获取该值,然后在调用包之前创建一个表或临时表并将变量加载到您创建的表中。之后,您可以访问您的ssis包中的varibale,了解您需要使用它的内容。不要忘记在工作结束后清理额外的桌子和/或价值。
答案 1 :(得分:0)
点击此链接:https://msdn.microsoft.com/en-us/library/jj820152.aspx
特别是第2部分。
看起来你可以创建变量并在EXEC语句中设置它们。
EXEC @ReturnValue=msdb.dbo.sp_start_job @job_id=@JobId, @parameter_name=N'Email', @parameter_value=@VarValue;
类似的东西。