SSIS中的有趣行为。我有一个2005年开发的dtsx包。其中一个Execute SQL任务有一个CTE语句。这是该块中唯一的声明。当我在2005年调试包时一切正常。但是,当我在部署到服务器后将程序包作为作业运行时,我收到一条错误消息,指出关键字"附近有错误的语法。"
当我在with语句之前放置一个分号时,它工作正常。现在我知道CTE之前的陈述需要用半结肠来终止,而且我已经养成了总是终止所有陈述的习惯......但是在此CTE之前没有任何陈述。我甚至检查了之前可能运行的任何其他执行SQL任务,并且所有语句都已正确终止。这是在SQL 2008R2中运行的2005包。
所以它现在工作正常,但我仍然对为什么会发生这种情况感到困惑。有没有人有任何想法?
答案 0 :(得分:1)
感谢Mark的建议。是的,当作为一个工作运行时,代理似乎已将这些放在CTE之前的同一个SPID中。
因此,一个和两个不会被终止,这意味着第三个语句(作为CTE)需要以分号为前缀才能工作。有点烦人,但还好......