Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Configuration 如何在SSIS中动态设置执行包任务的位置_Configuration_Ssis_Package_Task_Execute - Fatal编程技术网

Configuration 如何在SSIS中动态设置执行包任务的位置

Configuration 如何在SSIS中动态设置执行包任务的位置,configuration,ssis,package,task,execute,Configuration,Ssis,Package,Task,Execute,我正在尝试在SQLServer2008中设置一个“主”SSIS包来运行其他“子”包。在开发“子”包时,我们将所有包都放在磁盘上,因此我们可以轻松地调试它们,因此我们在开发过程中使用文件连接器,可以很好地监控进度 部署时,我们将子包部署到SQL Server上的SSI,然后检查并更改所有执行包任务,以使用位置值“SQL Server”,并设置PackageName。完成后,我们将部署“主机” 我想做的是在执行包任务上使用一个表达式来设置连接属性,这样我们就可以根据环境进行配置。我们已经使用一个视图

我正在尝试在SQLServer2008中设置一个“主”SSIS包来运行其他“子”包。在开发“子”包时,我们将所有包都放在磁盘上,因此我们可以轻松地调试它们,因此我们在开发过程中使用文件连接器,可以很好地监控进度

部署时,我们将子包部署到SQL Server上的SSI,然后检查并更改所有执行包任务,以使用位置值“SQL Server”,并设置PackageName。完成后,我们将部署“主机”


我想做的是在执行包任务上使用一个表达式来设置连接属性,这样我们就可以根据环境进行配置。我们已经使用一个视图设置了SQL Server配置数据库,该视图检查查询的主机名,并根据查询返回不同的值。

您可以选择。您使用表达式的心态是正确的,但使用配置也可能会使您受益

要使用表达式,需要使用脚本任务或执行SQL任务返回要处理的文件列表

您可能需要将每个返回值分配给传递到表达式中的自己的变量,或者使用FOR-each循环并遍历列表,每次分配子包的位置

另一个选项是使用配置。我的首选是在SSI中使用配置表。如果在每个环境中都有相同的包列表,则可以传入根目录并使用以下表达式: @[用户::RootPackagePath]+“\PackageName.dtsx”

或者,您可以在配置表中为每个子包创建一条记录,并将其传递到包中

根据评论进行编辑: 我成功地配置了一个包,通过配置从文件系统调用一个包,然后调用SQL来更改

我只需要为每一个传递连接和PackageName。对于SQL,它需要连接管理器中的名称(.\SQL2008R2在我的例子中)和包名称(\Package1)。对于文件系统,PackageName是空白的,连接是连接管理器中的文件连接

你必须把这两个都放在包里,但你要在两者之间切换


Hi Vinnie,谢谢你的回答,但我想知道的是如何更改“执行包任务”的设置,以便我们可以在开发时从文件系统运行“子”包,部署时从SQL Server运行它。该选项位于“包”、值“位置”和“连接”下。谢谢..当你知道去哪里看和做什么时,SSIS是多么强大,我不知道你是怎么知道的,但是非常感谢你,做得很好。我早上回到办公室,所以到时候我会检查你的解决方案,并希望将其标记为已回答。