有没有办法测试SQL语句以查看C#中是否可执行?

时间:2012-03-03 20:12:43

标签: c# sql sql-server entity-framework ado.net

我不是要求通过解析来测试SQL语句。

我的意思是类似于使用ADO.NET执行SQL语句,因此它实际上将在SQL Server中运行,以查看字段名称是否正确,表名是否正确,stynx正确,数据类型是否更正等。

之前的开发人员通过使用ADO.NET执行SQL语句并检查是否为throw execption来完成此操作。但是数据返回是一个大数据集,这会浪费资源。那么无论如何我可以让SQL Server在C#中为我执行语句检查吗?

2 个答案:

答案 0 :(得分:8)

答案 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子句。