我不是要求通过解析来测试SQL语句。
我的意思是类似于使用ADO.NET执行SQL语句,因此它实际上将在SQL Server中运行,以查看字段名称是否正确,表名是否正确,stynx正确,数据类型是否更正等。
之前的开发人员通过使用ADO.NET执行SQL语句并检查是否为throw execption来完成此操作。但是数据返回是一个大数据集,这会浪费资源。那么无论如何我可以让SQL Server在C#中为我执行语句检查吗?
答案 0 :(得分:8)
尝试SET PARSEONLY ON。 http://msdn.microsoft.com/en-us/library/ms178629.aspx
答案 1 :(得分:1)
PARSEONLY的问题是,它只检查语法结构。它不解析表名和列名。所以
SET PARSEONLY ON
GO
SELECT nocolumn FROM no.notable;
GO
SET PARSEONLY OFF
运行没有错误。
没有干净的方法来实现您的目标,但您可以尝试ROWCOUNT设置:
SET ROWCOUNT 1;
BEGIN TRAN
SELECT * FROM sys.objects;-- Your statement
ROLLBACK
SET ROWCOUNT 0;
ROWCOUNT设置在到达n行后停止执行。显式事务确保不会对该数据库应用任何更改。您也可以从C#代码控制事务。
这是不理想的原因是有些操作要求SQL Server在返回单行之前完成所有工作。一个例子是ORDER BY子句。