Estoy usando SMO para ejecutar un script SQL por lotes. En Management Studio, la secuencia de comandos se ejecuta en aproximadamente 2 segundos. Con el siguiente código, tarda unos 15 segundos.SQL SMO para ejecutar el script TSQL por lotes
var connectionString = GetConnectionString();
// need to use master because the DB in the connection string no longer exists
// because we dropped it already
var builder = new SqlConnectionStringBuilder(connectionString)
{
InitialCatalog = "master"
};
using (var sqlConnection = new SqlConnection(builder.ToString()))
{
var serverConnection = new ServerConnection(sqlConnection);
var server = new Server(serverConnection);
// hangs here for about 12 -15 seconds
server.ConnectionContext.ExecuteNonQuery(sql);
}
El script crea una nueva base de datos e inserta unos pocos miles de filas en unas pocas tablas. El tamaño de base de datos resultante es de aproximadamente 5 MB.
¿Alguien tiene alguna experiencia con esto o tiene una sugerencia sobre por qué esto podría estar funcionando tan lentamente con SMO?
Yo diría que esto no es algo de lo que preocuparse, 15 segundos para crear una base de datos parece razonable. Además, cuando ejecutas la consulta en SSMS, ¿ya estás conectado al servidor? ¿Diferente máquina cliente? – MrEdmundo
Mismo equipo cliente. La apertura de la conexión no parece llevar tanto tiempo, solo la llamada ExecuteNonQuery. La preocupación es que este paso es parte del método AssemblyInitialize para nuestras pruebas unitarias, por lo que tener que tomar 15 segundos adicionales solo para iniciar las pruebas unitarias es una verdadera molestia. – Jeff
¿Alguien? Realmente me gustaría usar estos guiones para nuestras pruebas unitarias. – Jeff