Sql Server可以让你"noexec"的去执行SQL语句。语法如下:
SET NOEXEC { ON | OFF }
SQL语句的执行有2个阶段,编译和执行,而设置'noexec'为on之后,实际上只是对SQL语句进行了编译,并没有执行,MSDN上也注明此方法一般只用于SQL语法和对象名的检测。由于没有真正的执行,如果尝试使用ADO或@@ROWCOUNT去获取一个DDL或DQL语句所影响的行数,结果是-1。
SET NOEXEC的设置是在运行时,而不是编译时,也就是说是可以在运行阶段动态改变的,某一段脚本你可以"真执行",某一段又“假执行”。另外,SET NOEXEC的设置并不是全局的,也就是说下一次查询你需要重新设置状态。当然默认是off的,你一般不需要设置。
此外,Sql Server还提供了另一个类似的方法:
SET PARSEONLY { ON | OFF }
SET PARSEONLY 表示解析但不编译和执行语句,但MSDN说明,不要将SET PARSEONLY 用于存储过程或触发器。
另外这是Sql Server2008以后才有的功能。