Sto utilizzando SMO per eseguire uno script SQL batch. In Management Studio, lo script viene eseguito in circa 2 secondi. Con il seguente codice, ci vogliono circa 15 secondi.SQL SMO per eseguire lo script TSQL batch
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);
}
Lo script crea un nuovo database e inserisce poche migliaia di righe su poche tabelle. La dimensione del DB risultante è di circa 5 MB.
Chiunque ha qualche esperienza con questo o ha un suggerimento sul motivo per cui questo potrebbe funzionare così lentamente con SMO?
Direi che non è qualcosa di cui preoccuparsi, 15 secondi per creare un database sembra ragionevole. Inoltre quando esegui la query in SSMS sei già connesso al server? Macchina client diversa? – MrEdmundo
Stessa macchina client. L'apertura della connessione non sembra richiedere molto tempo, solo la chiamata ExecuteNonQuery. La preoccupazione è che questo passaggio faccia parte del metodo AssemblyInitialize per i nostri Test unità, quindi avere 15 secondi in più solo per avviare i test unitari è una vera seccatura. – Jeff
Chiunque? Mi piacerebbe davvero usare questi script per i nostri test unitari. – Jeff