我有一个 SSIS 包,它从实时和测试环境填充报告仓库。
目前,随着源连接在实时和测试之间发生变化,包的每个步骤都重复了。如果需要更改,这将是一个痛苦的维护。
我知道我可以通过代理作业向包发送变量值。
我想知道我是否可以减少包装以便步骤只出现一次。然后,代理作业可以有两个执行包的步骤。例如,第一步执行包,变量集是实时数据库的名称,第二步再次执行包,但变量集是测试数据库的名称。
您可以根据收到的变量动态选择连接吗?
有没有更好的方法?
谢谢
我有一个 SSIS 包,它从实时和测试环境填充报告仓库。
目前,随着源连接在实时和测试之间发生变化,包的每个步骤都重复了。如果需要更改,这将是一个痛苦的维护。
我知道我可以通过代理作业向包发送变量值。
我想知道我是否可以减少包装以便步骤只出现一次。然后,代理作业可以有两个执行包的步骤。例如,第一步执行包,变量集是实时数据库的名称,第二步再次执行包,但变量集是测试数据库的名称。
您可以根据收到的变量动态选择连接吗?
有没有更好的方法?
谢谢
您希望将环境变量合并到您的 SSIS 包中。设置代理作业以使用不同的环境变量。
您可以在代理作业的每个步骤中设置变量。如果您在项目文件夹中创建多个 SSISDB 环境,它们可以使用或存储不同的变量来执行您的 SSIS 包。
参考: https ://www.mssqltips.com/sqlservertip/4810/setup-environment-variables-in-sql-server-integration-services/
好的,是的,你可以,因为我已经弄清楚了。
在包中创建了一个名为 DB 的变量,数据类型为字符串。
在连接管理器中创建了一个连接,但将数据库留空。
在连接属性上选择“表达式”。在弹出对话框中,从“属性”下的下拉列表中选择 InitialCatalog,并将 @[User::DB] 作为“表达式”值。
在代理作业中,将“设置值”选项卡上的“属性路径”设置为 \Package.Variables[User::DB].Value 并将“值”设置为活动数据库的名称。
然后创建第二个步骤并复制上面的步骤,但将值设置为测试数据库名称。
非常感谢