从存储过程调用参数化SSIS包

时间:2016-09-19 10:48:18

标签: sql-server sql-server-2008 stored-procedures parameters ssis

我正在使用SP调用SSIS包,我之前使用的是

EXEC msdb.dbo.sp_start_job

问题是当我调用该包时我需要传递一个参数而我无法做到。示例如下:

ALTER PROCEDURE [dbo].[Clawback]
      @Country      CHAR(2)
    , @StartDate        DATETIME
    , @EndDate      DATETIME
AS

BEGIN
    BEGIN TRY
        TRUNCATE TABLE [dbo].[ClawbackConfig]
        INSERT INTO [dbo].[ClawbackConfig] 
(
             Country
            ,StartDate
            ,EndDate
            ) VALUES (
                 @Country
                ,@StartDate
                ,@EndDate
                )

EXEC msdb.dbo.sp_start_job N'ExecuteJob'

此存储过程用于使用所需的日期和国家/地区运行数据提取,这些值存储在一个表中,并在通常的增量过程中使用。

我想提一下,想法是使用相同的包进行增量+回拨,增量过程需要country参数。

所以我需要以某种方式在运行之前将此过程中给出的@Country传递给包。 该包存储在Integration Services SQL Server 2008中,因此我无法使用catalog.create_execution或cmd。有关于此的任何想法?是使用C#的唯一解决方案吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

没有办法做到这一点。您可以从SSIS配置中读取(在被调用的proc中,请参阅:

http://blogs.lessthandot.com/index.php/datamgmt/dbprogramming/execute-ssis-from-sql/) 

或者将值存储到调用的proc读取的表中,然后使用proc中的读取变量。