What is the difference between SET NOEXEC ON and SET PARSEONLY ON?
The order of the tasks in executing a SQL query are parsed, compile and execute.
PARSE
SQL Server parses the syntax of a T-SQL. For a successful query execution. It should have valid syntax. It also checks for the variable declaration, query identifiers.
COMPILE
SQL Server checks for the objects, whether they exist or not. It also checks user permissions. During the compilation phase, SQL Server also optimizes the query execution and comes with an optimized execution plan using available indexes and statistics
EXECUTE
Once SQL Server completed parse and compilation, SQL Server executes query batch and returns output to the client
So if you have the following settings the engine do parse and compile tasks but not execute.
SET NOEXEC ON
SET PARSEONLY OFF