Sql server 动态选择要启动的SSIS包

Sql server 动态选择要启动的SSIS包,sql-server,ssis,Sql Server,Ssis,对于每个SSIS负载都有一组不同的表,我想实现一个智能例程,它只启动存在文件的包。 我的任务是将文件列表从文件夹上载到数据库表: [dbo].[FileList] Product.csv Sales_2018.csv Customer.csv Delivery.csv 如果在我的SSI中,除了产品、销售、客户、交付包之外,我还有发货、退货和其他信息,是否可以根据文件列表匹配自动禁用这些信息。那么只有产品、销售、客户和交付包才会运行 还是应该以另一种方式处理 谢谢大家! 我以前用这个简单的控制流做

对于每个SSIS负载都有一组不同的表,我想实现一个智能例程,它只启动存在文件的包。 我的任务是将文件列表从文件夹上载到数据库表:

[dbo].[FileList]

  • Product.csv
  • Sales_2018.csv
  • Customer.csv
  • Delivery.csv
  • 如果在我的SSI中,除了产品、销售、客户、交付包之外,我还有发货、退货和其他信息,是否可以根据文件列表匹配自动禁用这些信息。那么只有产品、销售、客户和交付包才会运行

    还是应该以另一种方式处理


    谢谢大家!

    我以前用这个简单的控制流做过这件事

    请注意,每一个的第二个仅循环一次。这只是检查一个文件是否存在而没有脚本任务

    还有几点注意:

    1. Store execute sql results into Object Variable
    2. Outer foreach is on ADO Object (variable from step 1)
    2a. Map the current iteration of the object to local variables
    3. Inner foreach is on file based on local variable from step 2
    4. Package expression is based on local variable from step 2
    

    是的,你能做到。指定要在变量中运行的包的值,然后可以将该变量引用为要在执行包任务中运行的SSIS包的名称。您需要在属性窗格的Expression属性中设置包名的值,并且不要忘记在其名称中包含包的扩展名(可能是
    dtsx
    ),谢谢。到目前为止我做了什么:1)使用SELECT执行SQL任务?+'dtsx'=[file]来自SANDBOX.dbo.FileList,变量名为PackageToRun,输出方向为2)使用参数绑定执行包任务:NewParameterName=User::PackageToRun表达式:PackageName@[User::PackageToRun]在包选项卡上,我在下拉列表中选择Package.dtsx,它显示一个红十字按钮。。。我在SSIS中填充了一个表以及许多具有相同名称的断开连接的包。我错过了什么?错误是没有指定包…您不需要在执行包任务上选择包名称;它将由表达式设置。更改其值将删除表达式。数据连接器如何?您是否也为它们设置了变量?我有路径和文件名的映射表。表中需要存储文件路径名和包名。有了这些,您可以搜索查看文件是否存在,如果存在,则运行package.filePathName将是foreach文件搜索中的一个表达式。和packagename运行PackageNote时的表达式内部foreach仅用于检查文件是否存在。我发现这比使用脚本任务更容易解释,在脚本任务中,您可以将布尔变量设置为System.IO.File.Exists(filePathName);