不接受SSIS DTEXEC包变量空间字符

Eri*_*ikE 7 ssis execution package

我正在尝试使用以下代码在SQL 2005上执行SSIS包:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
 /SET "\Package.Variables[FileFolder].Value";"\\SomeServer\Someshare\Output Batch\"
Run Code Online (Sandbox Code Playgroud)

这会产生:

Option "Batch " is not valid.
Run Code Online (Sandbox Code Playgroud)

引号内的批处理结尾处的空格给了我一个提示,也许它将最终的反斜杠视为转义字符.所以我这样试了:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
 /SET "\Package.Variables[FileFolder].Value";"\\\\SomeServer\\Someshare\\Output Batch\\"
Run Code Online (Sandbox Code Playgroud)

这允许程序包运行,但是当此变量用作输出数据的flatfile名称时,它现在会出现以下错误:

Warning: 2010-07-27 14:36:38.23
   Code: 0x8007007B
   Source: Data Flow Task Flat File Destination [72]
   Description: The filename, directory name, or volume label syntax is incorrect.
End Warning
Error: 2010-07-27 14:36:38.23
   Code: 0xC020200E
   Source: Data Flow Task Flat File Destination [72]
   Description: Cannot open the datafile "\\\\SomeServer\\Someshare\\Output Batch\FlatFile.txt".
End Error
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?

Eri*_*ikE 9

在列出错误数据文件的错误消息中,单词Batch之后的单个反斜杠给出了可能只反斜杠受影响的提示.

一些测试证明,由于一些奇怪的原因,当包变量的最后一个字符需要反斜杠时,SSIS要求它加倍.即使在使用GUI并选择"SQL Server Integration Services包"类型的作业并单击"设置值"选项卡时,这也适用:必须将尾部反斜杠加倍.

最后的工作命令是:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
 /SET "\Package.Variables[FileFolder].Value";"\\SomeServer\Someshare\Output Batch\\"
Run Code Online (Sandbox Code Playgroud)

最终的双反斜杠.