2
SSIS中有趣的行为。我在2005年开发了一个dtsx包。其中一个执行SQL任务有一个CTE语句。这是该块中唯一的声明。当我在2005年调试包时,一切正常。但是,当我在部署到服务器后将包作为工作运行时,出现错误,指出关键字“with”附近的语法不正确。SSIS中CTE之前缺少分号
它工作得很好,但是当我在with语句之前放一个分号。现在我知道CTE之前的陈述需要用分号结束,并且养成了总是终止我所有陈述的习惯......但是在CTE之前没有任何陈述。我甚至检查过可能已经运行的其他任何执行SQL任务,并且所有的语句都被正确终止。这是SQL 2008R2中运行的2005包。
所以它现在工作正常,但我仍然不知道为什么会发生这种情况。有没有人有任何想法?
当你通过一个工作来运行这个包时,我猜想一些sql查询是在执行sql任务之前执行的。所以你需要在cte之前使用终结符,并且总是建议使用;在cte之前。 – 2014-09-19 09:30:46
您可以使用SQL事件探查器来捕获程序包运行时发送的sql语句吗?查看SSIS是否将批处理中的其他语句放入执行SQL任务中会很有趣。 – 2014-09-19 10:09:18
当然。好主意马克。和拉姆,我想知道的一样,是的,你是对的。作为一项工作运行时,代理似乎已将这些CTE放在同一个SPID中。 1)exec sp_oledb_ro_usrname 2)select collationname(0x0904D00000) 3); myCTE as .....; 谢谢你们:) – ScubaManDan 2014-09-19 13:28:30