Я пытаюсь сделать свои интеграционные тесты более идемпотентными.Одна идея заключалась в том, чтобы выполнять откат после каждого теста, а другая - в том, как программно анализировать текст, подобно зеленому флажку в Query Analyzer или SSMS.
Как заставить SQL Server анализировать мою командубез запуска с использованием ADO.NET?
ОБНОВЛЕНИЕ: Это то, что в итоге сработало как нужно:
using (DbCommand executeOnly = Factory.DbCommand())
{
executeOnly.Connection = command.Connection;
executeOnly.CommandType = CommandType.Text;
executeOnly.CommandText = "SET NOEXEC ON;" + sqlCommand;
executeOnly.Connection.Open();
executeOnly.ExecuteNonQuery();
}
//set more properties of command.
command.Execute();
По необъяснимым причинам «SET PARSEONLY ON
» сработало тольков Query Analyzer.Я не мог установить это на соединении ADO.NET.Это также хорошо, потому что PARSEONLY
, кажется, ловит только синтаксические ошибки, что не является распространенной ошибкой.SET NOEXEC ON
будет обнаруживать более широкий спектр ошибок, таких как представление, которое ссылается на отсутствующую таблицу или столбец или отсутствующий параметр в хранимой процедуре.