我正在 SSIS 中制作一个框架,用于从可配置文件夹加载文件并将它们与数据库中的逻辑作业相匹配。在此作业中配置了包名称,并在 SSIS 中我在运行时执行此包。
我想根据加载的作业以编程方式加载此包的包配置。 SSIS SQL Server 包配置不是一种选项,因为它只在运行时为包本身加载一次值,但我想在运行时加载已与作业一起存储的特定包配置(作业有一个包,但有很多封装配置)...
示意图:
folderA -> 文件 A.1 -> 作业 A -> 加载作业 A 的包配置 -> 在作业 A 中执行包。
那可能吗?
我们使用父包和子包执行类似的操作,为具有不同配置值的不同客户端运行标准包。父包使用环境变量和我们的配置表来提取该特定进程的配置值。子表配置为接受在执行包任务中从父包发送的配置变量。如果需要的话,这还允许我们为父包中的特定客户端执行一些自定义步骤(这里大约是 100% 的时间)。因此,如果您从一个客户端获取一个文件,但他们无法以标准子导入使用的格式提供,您可以执行转换步骤以使文件为标准导入做好准备,然后运行标准。或者,您可以在标准包之后添加步骤,以向客户发送电子邮件,但需要在数据中修复例外情况,例如,如果只有一个客户需要这样做。
您可以在父包中为要发送的每条配置信息创建变量,通常发送到子包中连接的其他变量或连接字符串。然后,您放入一个使用与子包的连接的 Excute 包任务。
然后,在子包中,转到 SSIS 菜单并选择包配置和添加。然后对于配置类型,您选择父包变量。您将为要发送到子包的每个配置项创建一个父包变量。我们发送的内容包括 client_id、客户端特定数据库的连接字符串、可能因客户端而异的变量等。
我们还将所有配置存储在元数据库的表中,其中存储有关导入的信息。因此,我们将父包设置为使用环境变量来告诉它连接到哪个数据库来获取配置信息。然后第二个配置是存储配置信息的 SSISConfiguration 表。我们通过在测试包之前运行的插入脚本按服务器填充该信息(通常会因服务器而异,dev、qa 和 prod 的连接字符串不同)。
有关更多详细信息,请参阅联机丛书中的执行包任务,它将向您展示如何设置包以传递变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)