如何将"User::filePath"等变量传递给由 SQL 代理作业运行的 SSIS 包中的脚本?



如果我直接查看脚本,则在使用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

最新更新