我正在使用工作流来从配置表中读取详细信息并将详细信息传递给包。有问题的程序包是根据作为参数传递的文件名(正在从静态数据库表中读取)将CSV加载到数据库中。
我有骨头工作,我无法理解如何正确配置目标包中的参数以正确使用它。
在我的调用程序中,我设置参数并执行包,如下所示
....
EXEC CATALOG.set_execution_parameter_value @ExecutionID
,@object_type = 30 -- (30 is package param!)
,@parameter_name = N'Parameter1'
,@parameter_value = @Parameter1
EXEC CATALOG.start_execution @ExecutionID
object_type似乎有项目,包或执行参数的3个选项......
在我的目标包中,我将 Parameter1 定义为包参数(在包设计的参数选项卡中列出
我有一个"平面文件来源"已配置和连接管理器属性 - >表达式,我将ConnectionString覆盖设置为@ [Package :: Parameter1],它似乎无法正常工作。
感谢。
..更新。 在execution_parameter_values视图中,我突出显示了传递给包的内容: -
param_idexe_id | object_t | param_t | PARAMETER_NAME | PARAMETER_VALUE
3492 | 10184 | 20 |字符串|参数1 |
3493 | 10184 | 30 |字符串|参数1 | C:\ abc.csv
3494 | 10184 | 30 | String | CM.BLACKBEAST-II.StagingDB.ConnectionString | Data Source = BLACKBEAST-II; Initial Catalog = StagingDB; Provider = SQLNCLI11.1; Integrated Security = SSPI; Auto Translate = False;
答案 0 :(得分:0)
引用包级别变量将使用您显示的@[Namespace::VariableName]
模式。
参数,无论是Package还是Project,都将使用@[$Project::VariableName]
和/或@[$Package::VariableName]
的语法。
因此,在ConnectionString的表达式中,您应该使用@[$Package::Parameter1]
(并选择了更好的名称,但您已经知道了)。