如何在SSIS的Power Shell脚本中添加参数和conn管理器

时间:2019-02-08 14:21:50

标签: powershell ssis

下面是我的Power Shell脚本中的两个参数 1.环境2. ProcessData 如果我在命令提示符下执行此操作,则会出现以下错误 对于选项集无效。 由于数据源中的逗号,我如何解决此问题,请帮忙。 数据源= xxxxxxx,3181;

dtexec /ISServer "\SSISDB\DEV\PopulateData\PopulateData.dtsx" /server abbaa.com,3181 /Par "$ServerOption::SYNCHRONIZED(Boolean)";True /SET \Package.Variables[User::Environment].Properties[Value];"[sql1811174] Dev" /SET \Package.Variables[User::ProcessData].Properties[Value];"Data Source=xxxxxxx,3181;Initial Catalog=xxx11;Provider=SQLNCLI11.1;Integrated Security=SSPI;"

1 个答案:

答案 0 :(得分:0)

根本问题是您为User::ProcessData传递的分号被解释为命令行参数的分隔符,而不是字符串中的值。

您可以通过在第一个属性中添加分号来验证此行为

dtexec /ISServer "\SSISDB\DEV\PopulateData\PopulateData.dtsx" /server abbaa.com,3181 /Par "$ServerOption::SYNCHRONIZED(Boolean)";True /SET \Package.Variables[User::Environment].Properties[Value];"[sql1811174];Dev"

那会产生

  

参数“” \ Package.Variables [User :: Environment] .Properties [Value]; [sql1811174] ;;选项“设置”的开发“”无效。

完全不直观的转义方法是为参数值的双引号添加一个斜杠并将其加倍。

dtexec /ISServer "\SSISDB\DEV\PopulateData\PopulateData.dtsx" 
/server abbaa.com,3181 /Par "$ServerOption::SYNCHRONIZED(Boolean)";True 
/SET \Package.Variables[User::Environment].Properties[Value];\"[sql1811174] Dev\" 
/SET \Package.Variables[User::ProcessData].Properties[Value];"\"Data Source=xxxxxxx,3181;Initial Catalog=xxx11;Provider=SQLNCLI11.1;Integrated Security=SSPI;\""

为什么我可以对Environment使用简单的双引号,而不对ProcessData使用双引号?很好的问题,我不知道。我认为这是参数的复杂性+影响了前面的参数。