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