Taille des transactions

J’ai tendance à répéter à l’envi que les opérations dans SQL Server doivent être effectuées au maximum en ensembliste plutôt qu’en unitaire. Cela concerne aussi les transactions qui, à partir du moment où cela répond au fonctionnel, ne doivent pas être d’une granularité trop fine.

Tout comme il vaut mieux modifier une fois mille enregistrements que mille fois un enregistrement, il vaut mieux avoir une transaction de mille instructions que mille transactions de une instruction. Continuer la lecture

Mauvais plan d’exécution ?

Aujourd’hui, je vais aborder une situation assez couramment rencontrée : les plans d’exécution de procédures qui semblent partir de travers. Votre client vous appelle parce que ses traitements semblent être au ralenti et pourtant, lorsque vous récupérez sur votre serveur de tests une copie de sa base de données, tout semble fonctionner à merveille… Continuer la lecture

Un index pour l’occasion

Lorsque l’on consulte les différentes vues système d’une instance SQL, et plus particulièrement la vue sys.dm_db_missing_index_details, il peut arriver de trouver des index qui sont très utiles, mais seulement pour des actions « rares ».

Dans ce cas, le fait de créer un index permanent n’est peut-être pas la meilleure méthode, et il est à envisager de créer un index juste pour l’occasion. Continuer la lecture

Ajout de colonne sur SQL Server 2012

SQL Server 2012 présente de nombreuses nouvelles fonctionnalités. En ce qui concerne les performances et la haute disponibilité, voici une amélioration assez intéressante : l’ajout de colonnes NOT NULL en tant qu’opération en ligne. Elle peut, dans certains cas, rendre quasiment instantanné l’ajout de nouvelles colonnes même si la table contient un très grand nombre d’enregistrements. Continuer la lecture

Backup COPY_ONLY

Il est assez souvent négligé par les administrateurs de systèmes SQL Server que le fait de donner un peu trop de droits aux gestionnaires applicatifs de bases applicatives peut être néfaste à la gestion de la sécurité des données. Notamment, le fait de distribuer à tout va les droits de sauvegardes de bases de données peut au final nuire au plan de sauvegarde global, et même le mettre totalement à plat. Continuer la lecture

Mise à jour de définition de code : risques du DROP / CREATE

Pour mettre à jour une procédure stockée, une vue ou encore d’autres objets SQL Server disposant d’une définition sous forme T-SQL, une solution classique consiste à supprimer la définition actuelle de l’objet (DROP) et à recréer ensuite l’objet avec sa définition mise à jour. C’est d’ailleurs ce type de code que construit SQL Server Management Studio (SSMS).

Mais il est en fait parfois plus judicieux d’utiliser une méthode implémentant une mise à jour (commande ALTER), qui peut présenter des avantages non négligeables. Continuer la lecture