目前,SQL Server 支持以下语句:SET NOEXEC和SET PARSEONLY。
从文档中:
将 NOEXEC 设置为开:
当 SET NOEXEC 为 ON 时,SQL Server 编译每批 Transact-SQL 语句,但不执行它们。
将 PARSEONLY 设置为:
当 SET PARSEONLY 为 ON 时,SQL Server 仅解析语句。
我想这是“编译”与“解析”。“编译”应该包括“解析”。
如果我想验证 SQL 脚本的正确性,我应该使用哪一个?我倾向于回答:SET NOEXEC ON。
但是编译还有什么作用呢?“编译”是否意味着创建/修改执行计划?是否检查对象的存在?
如果您有以下情况会发生什么:
SET NOEXEC ON
SET PARSEONLY OFF
Run Code Online (Sandbox Code Playgroud)
我发现这两种选择都令人困惑。
谢谢