如何在SSIS中创建任务,使用户每次运行程序包时都可以在其中更改变量的值?

问题描述 投票:-1回答:2

我已经在sis中创建了一个程序包,其中我在SQL语句内使用了一些日期变量(即,声明@DateIn =“ 2018-02-22”并声明@DateTo =“ 2018-03-22”),将相应的数据加载到数据仓库表中。

我需要做的是创建一个任务或其他程序包,这使我可以在每次运行它时从外部定义这些变量的值,以便用与我每次设置的日期相对应的数据。

根据我的阅读,我应该使用脚本任务或执行sql任务或参数

您能帮我吗?还是可以建议我一个好的教程/链接?我发现了很多东西,但无法决定它们是否满足我在上面描述的需求。谢谢

sql-server ssis ssms
2个回答
1
投票
  1. 使用变量@DateStart@DateEnd创建DTSX包

  2. 创建表,其中包含3列DateStart,DateEnd,活动

  3. 创建存储过程,从新创建的表中读取DateStartDateEnd,其中Active = 1,并在SQL Server作业上进行更改,使用所需的值更新DTSX包内的变量值,方法是使用sp_update_jobstep

    See link

    命令的执行端:

     dtexec /f YourPackage.dtsx
             /set \package.variables[DateStart].Value;myvalue
             /set \package.variables[DateStart].Value;myvalue
    

    在存储过程内添加sp_start_job,以使用新的变量值启动作业。

  4. 创建包含1个步骤的作业,其中包含执行步骤3中的存储过程

  5. 您需要做的就是更新步骤2中创建的表中的值,然后执行作业以运行存储过程以更新DTSX job exec命令并启动它。您可以从网站触发此操作,并从文本框中控制表格的值。

还需要特定的权限,更新SQL Agent作业的SP需要由Sysadmin运行


1
投票

顺便问一下新学习者!这种情况有很多方法,下面我很少提到。1-在变量窗格@DateIn和@DateTo中创建变量以存储日期,数据类型将为date。现在在Excel,text或xml中为这两个变量输入2项,并使用foreachloop container进行调用并将其分配给变量。2-创建一个SQl表,您可以在其中每天手动存储这些值,或者使用excel,text,xml或csv文件加载该表,然后在Execute SQL Task中调用该表,然后选择结果集和将结果集值传递给变量。希望它能解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.