2016-02-25 21 views
2

我在我的服務器上有大量作業。他們都在裏面有一個SSIS步驟。最近我注意到msdb.dbo.sysjobsteps.command列在一些作業中有不同的模式。我的意思是說其中有些人有轉義角色,有些人沒有。實例:SSIS作業步驟命令中的轉義字符

1 - 與逃逸:

/DTS 「\」 \ MSDB \ BLABLA \ 「」/ SERVER SomeServer/CHECKPOINTING OFF/SET 「\」 \ package.variables [Variable_One] \」 「;」\「VALUE_ONE \」「/ SET 」\「\ package.variables [Variable_Two] \」「; VALUE_TWO/SET 」\「\ package.variables [Variable_Three] \」「;」\「VALUE_THREE \」 「/ REPORTING ë

2 - 無逃逸:

/DTS 「\ MSDB \ BLABLA」/ SERVER SomeServer/MAXCONCURRENT 「-1」 /CHECKPOINTING OFF/SET 「\ package.variables [Variable_One]」; 「VALUE_ONE」 /SET「\ package.variables [Variable_Two ]「; VALUE_TWO/SET 」\ package.variables [Variable_Three]「; VALUE_THREE /報表é

有誰可以給​​我爲什麼一些命令是有,有的沒有這些轉義字符解釋一下嗎? 所有工作正常工作,沒有問題。

+0

轉義僅在其中一個參數(如包名稱本身)包含空格時纔會發生?那麼它的行爲與命令提示符中的長路徑的行爲類似。 – dlatikay

回答

0

據我所知,字符串包含空格時需要轉義字符。當不涉及空間時,轉義字符不是必需的,但它們也不會造成問題。

說明: 假設該值爲\ MSDB \ BlaBla。它可以按原樣傳遞,不需要引號。 如果值是\ MSDB \ Bla Bla,爲了通過它需要引號:「\ MSDB \ Bla Bla」

轉義字符(\)的含義是恰好接下來的字符將用作簡單字符,沒有特殊用途。在/ DTS「...解析器期待下一個」字符結束字符串。 \「向解析器解釋:」字符不是字符串的結尾,而是字符串中的簡單字符。

所以/ DTS 「\」 \ MSDB \ BLABLA \ 「」 表示DTS = 「\ MSDB \ BLABLA」 而/ DTS 「\ MSDB \ BLABLA」 是指DTS = \ MSDB \ BLABLA

0

我想這取決於參數如何傳遞給作業。

按照你的例子,一次性「VALUE_THREE」已通過,而其他時間只有VALUE_THREE(沒有「」)。

此外,它可能取決於如何添加作業/參數/ ... - 以編程方式或通過插入或其他方式手動添加。

這將解釋數據庫中的不同字符串。

相關問題