SET PARSEONLY
檢查每個 Transact-SQL 語句的語法並返回任何錯誤消息,但不編譯和執行語句。
SET PARSEONLY { ON | OFF }
當 SET PARSEONLY 為 ON 時,SQL Server 只分析語句。當 SET PARSEONLY 為 OFF 時,SQL Server 編譯並執行語句。
SET PARSEONLY 的設置是在分析時設置,而不是在執行或運行時設置。
在存儲過程或觸發器中不要使用 PARSEONLY。如果 OFFSETS 選項為 ON 而且沒有出現錯誤,則 SET PARSEONLY 返回偏移量。
SET NOEXEC (Transact-SQL)
編譯每個查詢但不執行查詢。
SET NOEXEC { ON | OFF }
當 SET NOEXEC 為 ON 時,SQL Server 將編譯每一批處理 Transact-SQL 語句但並不執行它們。當 SET NOEXEC 設置為 OFF 時,所有批處理將在編譯後執行。
SQL Server 中的語句執行包含兩個階段:編譯和執行。該設置可用於讓 SQL Server 在執行 Transact-SQL 代碼時,驗證代碼中的語法和對象名。它也可以用於調試通常是較大的批處理中的部分語句。
SET NOEXEC 設置是在執行或運行時設置,而不是在分析時設置。
SET PARSEONLY的代碼:
代碼如下:
public bool ValidateSQL(string sql)
{
bool bResult;
SqlCommand cmd = _conn.CreateCommand();
cmd.CommandText = "SET PARSEONLY ON";
cmd.ExecuteNonQuery();
try
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
bResult = true;
}
catch (Exception ex)
{
bResult = false;
}
finally
{
cmd.CommandText = "SET PARSEONLY OFF";
cmd.ExecuteNonQuery();
}
return bResult;
}