Sto cercando di rendere i miei test di integrazione più identi- cienti. Un'idea era quella di eseguire il rollback dopo ogni test, l'altra idea era quella di analizzare in modo analitico il testo, in modo simile alla casella di controllo verde in Query Analyzer o SSMS.Come posso controllare a livello di codice (analizzare) la validità di un'istruzione TSQL?
Come si ottiene SQL Server per analizzare il mio comando senza eseguirlo tramite ADO.NET?
UPDATE: Questo è quello che alla fine ha funzionato, se lo desideri:
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();
Per motivi inspiegabili, "SET PARSEONLY ON
" ha lavorato solo in Query Analyzer. Non ho potuto impostare questo su una connessione ADO.NET. Lo è anche perché PARSEONLY
sembra catturare solo gli errori di sintassi, che non è un errore comune. SET NOEXEC ON
individuerà una varietà più ampia di errori, ad esempio una vista che fa riferimento a una tabella o colonna mancante oa un parametro mancante in una stored procedure.
Domanda interessante anzi –
sto supponendo che sia 'executeOnly.CommandText = "SET NOEXEC ON; "+ sqlCommand;': 3 – Liz