Есть ли способ проверить оператор SQL, чтобы увидеть, является ли исполняемый файл в C #? - PullRequest
3 голосов
/ 04 марта 2012

Я не прошу проверить SQL-оператор путем его синтаксического анализа.

Я имею в виду что-то похожее на выполнение SQL-оператора с ADO.NET, поэтому он будет фактически запускаться в SQL Server, чтобы увидеть, если имя поляправильно, имена таблиц правильные, stynxs правильные, тип данных исправляет и т. д.

Предыдущий разработчик сделал это, выполнив SQL-оператор с ADO.NET и проверил, является ли throw throw execption.Но возврат данных - это большой набор данных, который тратит ресурсы впустую.Так есть ли в любом случае я могу попросить SQL Server выполнить проверку операторов для меня в C #?

Ответы [ 2 ]

8 голосов
/ 04 марта 2012

Попробуйте установить PARSEONLY ON. http://msdn.microsoft.com/en-us/library/ms178629.aspx

1 голос
/ 04 марта 2012

Проблема с 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...