Estoy tratando de hacer que mis pruebas de integración sean más idempotentes. Una idea era ejecutar la reversión después de cada prueba, la otra idea era cómo analizar de forma programática el texto, de forma similar a la casilla de verificación verde en Query Analyzer o SSMS.¿Cómo puedo verificar (analizar) mediante programación la validez de una sentencia de TSQL?
¿Cómo obtengo que SQL Server analice mi comando sin ejecutarlo con ADO.NET?
ACTUALIZACIÓN: Esto es lo que finalmente funcionó como desee:
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();
Por razones inexplicables, "SET PARSEONLY ON
" sólo funcionaba en el Analizador de consultas. No pude configurar esto en una conexión ADO.NET. Es mejor porque PARSEONLY
parece captar solo errores de sintaxis, que no es un error común. SET NOEXEC ON
detectará una variedad más amplia de errores, como una vista que hace referencia a una tabla o columna faltante o un parámetro faltante en un procedimiento almacenado.
Interesante pregunta de hecho –
Estoy asumiendo que es 'executeOnly.CommandText = "SET NOEXEC ON; "+ sqlCommand;': 3 – Liz