我正在开发一个工作流程来从配置表中读取详细信息并将详细信息传递给包 . 有问题的程序包是根据作为参数传递的文件名(正在从静态数据库表中读取)将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;
1 回答
引用包级别变量将使用您显示的
@[Namespace::VariableName]
模式 .参数,无论是Package还是Project,都将使用
@[$Project::VariableName]
和/或@[$Package::VariableName]
的语法 .因此,在ConnectionString的表达式中,您应该使用
@[$Package::Parameter1]
(并选择了更好的名称,但您已经知道了) .