Как переменная типа `User :: filePath` передается сценарию в пакете служб SSIS, который выполняется заданием агента SQL? - PullRequest
2 голосов
/ 15 мая 2019

Если я посмотрю непосредственно на скрипт, вызов 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> каким-то образом указывает значение User::filePath или, возможно, FlatFileConnection в пакете служб SSIS.

Свойства шага задания для задания агента SQL (в пользовательском интерфейсе) в General, а затем на вкладке Command line, выберите Restore the original options, так где же указывается User::filePath?

1 Ответ

1 голос
/ 16 мая 2019

Следующая строка кода:

@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 Utility :

/ Set Переопределяет конфигурацию переменной, свойства, контейнера, поставщика журналов, перечислителя Foreach или соединения в пакете.Когда используется эта опция, / Set изменяет аргумент propertyPath на указанное значение.Можно указать несколько параметров / Set.

Ниже приведен пример выполнения пакета и предоставления нового значения для переменной:

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

...