2

如果我直接查看脚本,则在使用时对 sp_add_jobstep 的调用CREATE SCRIPT是:

@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>某种方式指定了 SSIS 包的值User::filePath或者可能FlatFileConnection是 SSIS 包中的值。

SQL 代理作业(在 UI 中)的作业步骤属性,General然后是Command line选项卡,已Restore the original options选中,那么在哪里User::filePath指定?

4

1 回答 1

1

以下代码行:

@command=N'/FILE "<local-server-path-to.dtsx-file>" /CONNECTION "FlatFileConnection;"<unc-path-to.csv-file>" /CHECKPOINTING OFF /REPORTING E'

是传递给用于执行 SSIS 包的 dtexec 实用程序的参数。

您可以[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 实用程序文档

/Set 覆盖包中的变量、属性、容器、日志提供程序、Foreach 枚举器或连接的配置。使用此选项时,/Set 将 propertyPath 参数更改为指定的值。可以指定多个 /Set 选项。

以下是执行包并为变量提供新值的示例:

dtexec /f mypackage.dtsx /set \package.variables[myvariable].Value;myvalue

于 2019-05-16T00:54:59.370 回答