逃避SSIS工作步骤中的角色

时间:2016-02-25 08:24:31

标签: sql-server tsql ssis jobs

我的服务器上有很多工作。所有这些都有一个SSIS步骤。最近我注意到 msdb.dbo.sysjobsteps.command 列在某些作业中有不同的模式。我的意思是他们中的一些人有逃脱字符,有些人没有。例子:

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 \“”/报告   ë

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 / REPORTING E

有没有人可以向我解释为什么有些命令,有些没有这些转义字符? 所有工作都能正常工作,没有问题。

2 个答案:

答案 0 :(得分:0)

据我所知,当字符串包含空格时,需要转义字符。如果不涉及空间,则不需要转义字符,但它们也没有问题。

说明: 假设值为\ MSDB \ BlaBla。它可以按原样传递,不需要它周围的引号。 如果值为\ MSDB \ Bla Bla,为了传递它需要引号:“\ MSDB \ Bla Bla”

转义字符(\)的含义是,下一个字符将被用作简单字符,无需特殊用途。在/ DTS“......解析器期待下一个”字符结束字符串。 \“向解析器解释”字符不是字符串的结尾,而是字符串中的简单字符。

所以/ DTS“\”\ MSDB \ BlaBla \“”表示DTS =“\ MSDB \ BlaBla” 而/ DTS“\ MSDB \ BlaBla”表示DTS = \ MSDB \ BlaBla

答案 1 :(得分:0)

我想这取决于参数如何传递给作业。

按照你的例子,似乎例如一次“VALUE_THREE”已经过去,另一次只有 VALUE_THREE (没有“”)。

此外,它可能取决于作业/参数/ ...的添加方式 - 无论是以编程方式还是通过插入或其他方式手动添加。

这将解释数据库中的不同字符串。