Recuperare le statistiche di esecuzione di una query da SQL Server (anche SQL Azure)

La funzione che vi scrivo qua sotto, in realtà, è disponibile fin dal Framework 2.0.
Con poche righe di codice potete recuperare le statistiche di esecuzione di una query, una stored procedure o una vista direttamente da C#.
Per farlo è sufficiente impostare la proprietà StatisticsEnabled prima di aprire la connessione al vostro SQL Server.
Una volta eseguita la query, potete lanciare la funzione RetrieveStatistics e avrete in questo modo un Dictionary con tutte le statistiche di esecuzione del vostro command.

Vi lascio qua sotto il codice completo che potete usare.

public Dictionary<string,string> Run(string connectionString, string query)
{
    using (var sqlConnection = new SqlConnection(connectionString))
    {
        sqlConnection.StatisticsEnabled = true;

        sqlConnection.Open();

        using (var cmd = new SqlCommand(query, sqlConnection))
        {
            cmd.ExecuteReader().Dispose();
        }
        var stats = sqlConnection.RetrieveStatistics();

        var statistics = new Dictionary<string, string>();

        foreach (DictionaryEntry entry in stats)
        {
            statistics.Add(entry.Key.ToString(), entry.Value.ToString());
        }

        sqlConnection.ResetStatistics();

        return statistics;
    }
}

Questo è il link al gist che ho creato su GitHub: https://gist.github.com/kasuken/4c9d9a4b4d5177e104833095e4275729

 

Add comment

Loading