您的位置:首页 > 数据库

C#中验证sql语句的方法(SET PARSEONLY 与SET NOEXEC )

2012-06-27 19:24 477 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: