如果我直接查看脚本,则在使用CREATE SCRIPT
时呼叫sp_add_jobstep是:
@command=N'/FILE "<local-server-path-to.dtsx-file>" /CONNECTION "FlatFileConnection;"<unc-path-to.csv-file>" /CHECKPOINTING OFF /REPORTING E'
因此,在我看来<unc-path-to.csv-file>
某种程度上指定了User::filePath
或SSIS软件包中FlatFileConnection
的值。
SQL代理作业的作业步骤属性(在General
下的UI中(,然后在Command line
选项卡下,选择Restore the original options
,那么User::filePath
在哪里指定?
以下代码线:
@command=N'/FILE "<local-server-path-to.dtsx-file>" /CONNECTION "FlatFileConnection;"<unc-path-to.csv-file>" /CHECKPOINTING OFF /REPORTING E'
是传递给DTEXEC实用程序的参数,用于执行SSIS软件包。
您可以简单地使用以下代码行传递[User::FilePath]
值:
/SET Package.Variables[User::FilePath].Properties[Value];"C:File.dtsx"
整个命令将是:
@command=N'/FILE "<local-server-path-to.dtsx-file>" /CONNECTION "FlatFileConnection;"<unc-path-to.csv-file>" /CHECKPOINTING OFF /REPORTING E /SET Package.Variables[User::FilePath].Properties[Value];"C:File.dtsx"'
参考dtexec实用程序文档:
/设置覆盖变量,属性,容器,日志提供商,foreach enumerator或包装中的连接的配置。当使用此选项时,/set将propertypath参数更改为指定的值。可以指定多个/设置选项。
以下是执行软件包并为变量提供新值的示例:
dtexec /f mypackage.dtsx /set package.variables[myvariable].Value;myvalue