2010-07-27 86 views
5

我試圖用下面的SQL執行SSIS包2005:SSIS DTEXEC包變量空格字符不接受

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF 
/SET "\Package.Variables[FileFolder].Value";"\\SomeServer\Someshare\Output Batch\" 

這產生了:

Option "Batch " is not valid. 

在末尾的空間引號內的Batch這個詞給了我一個暗示,也許它將最後一個反斜槓當作一個轉義字符。所以,我想這樣說:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF 
/SET "\Package.Variables[FileFolder].Value";"\\\\SomeServer\\Someshare\\Output Batch\\" 

這使包運行,但是當這個變量作爲平面文件輸出數據的名稱,它現在提供了以下錯誤:

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 

什麼給?

回答

8

在列出錯誤數據文件的錯誤消息中,單詞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\\" 

有了最終的雙反斜線。

+0

這會被視爲Microsoft錯誤? – 2013-08-18 23:57:50

+0

我認爲用反斜槓來引用引號是有點標準的。奇怪的部分是,只有在雙引號字符之前才允許轉義反斜槓 - 本質上,反斜槓轉義爲「」或「\」''而沒有別的。這可能是正常的DOS批處理命令行爲 - 但我不確定。 – ErikE 2013-08-19 07:06:05

+0

我真的很感激你的上述問題和答案。當我有像\\我的服務器\我的路徑\這樣的網絡路徑時,它會將其分割爲\\我的「」服務器\我的「\ \路徑\直到找到您的解決方案。我幾個月前開始研究,直到找到你的帖子。 – 2013-08-19 12:26:43