Comment supprimer les statistiques d’exécutions des requêtes sur SQL Azure ?

Dans le cadre de tests de performances, j’ai cherché une solution pour remettre à zéro les statistiques présentées sur l’écran Query Performance du portail de management SQL AZURE.
J’ai rapidement découvert l’instruction DBCC FREEPROCACHE. Cette instruction permet en effet de supprimer les plans d’exécution mis en cache par SQL SERVER. Celle- ci n’est malheureusement pas supportée par SQL AZURE.
En cherchant un petit peu, j’ai découvert une solution simple et efficace pour contourner ce problème sur le blog de Christian Rodriguez. La solution consiste à modifier temporairement les tables de la base de données pour provoquer la suppression automatique des plans d’exécution en cache.
Voici le script :
SET NOCOUNT ON DECLARE @lcl_name VARCHAR(100) DECLARE @addcolumnSql nVARCHAR(MAX) DECLARE @dropcolumnSql nVARCHAR(MAX) DECLARE cur_name CURSOR FOR SELECT name FROM sysobjects WHERE type = 'U' OPEN cur_name FETCH NEXT FROM cur_name INTO @lcl_name WHILE @@Fetch_status = 0 BEGIN SET @addcolumnSql = 'alter table [' + @lcl_name + '] add temp_col_to_clear_exec_plan bit' EXECUTE sp_executesql @addcolumnSql PRINT @addcolumnSql SET @dropcolumnSql = 'alter table [' + @lcl_name + '] drop column temp_col_to_clear_exec_plan' EXECUTE sp_executesql @dropcolumnSql PRINT @dropcolumnSql FETCH NEXT FROM cur_name INTO @lcl_name END CLOSE cur_name DEALLOCATE cur_name SET NOCOUNT OFF
Ce script m’a été très utile pour mes tests, j’espère que cette astuce vous servira également.