Après avoir présenté dans deux précédents articles les Heaps et les Index Clustered, ce dernier article de la série va détailler ce qu’est un index non clustered. Continuer la lecture
Stockage des données et index – Partie 2 : Index Clustered
Parmi les fondamentaux de SQL Server figure la notion d’Index Clustered, souvent mal comprise par les débutants. Dans ce deuxième billet concernant l’organisation des données, nous chercherons à comprendre ce qu’est un index clustered. Continuer la lecture
Stockage des données et index – Partie 1 : Heap
Parmi les fondamentaux de SQL Server figure la notion d’Index Clustered, souvent mal comprise par les débutants. Avant de détailler dans un prochain billet cette notion d’index clustered, nous allons d’abord nous attacher à décrire le stockage des données dans le cas où une table ne contient pas d’index clustered. Continuer la lecture
Merge
Avec SQL Server 2008, la triplette d’instructions INSERT / UPDATE / DELETE s’est vu adjoindre une instruction complémentaire nommée MERGE. Voici une brève présentation de cette nouvelle commande. Continuer la lecture
Ajout de colonne
Même si l’on essaie toujours de viser juste du premier coup, un modèle de données n’est jamais complet à la première implémentation, et il peut notamment arriver que l’on ait besoin de rajouter certaines colonnes à des tables déjà remplies. Et lorsqu’il s’agit de colonnes non Nullables et que l’on souhaite formaliser la modification sous forme de script, quelques bonnes pratiques sont à connaître. Continuer la lecture
Gestion des verrous (Partie 2)
Dans un précédent article (voir ici), j’ai présenté une première approche d’un usage de la vue sys.dm_tran_locks afin d’identifier dans le cas des verrous de type PAGE les données concernées par le verrouillage.
Maintenant, attachons-nous à l’identification plus précise des lignes de données verrouillées, c’est-à-dire aux verrous de type KEY. Continuer la lecture
Gestion des verrous (Partie 1)
Lorsque l’on rencontre un problème de processus SQL bloqué par un autre, le problème vient des verrous, dont le rôle est de maintenir l’intégrité des données. La vue système sys.dm_tran_locks permet de lister les différents verrous gérés par le moteur (en attente, autorisés, …).
Néanmoins, les données retournées par cette vue peuvent parfois être relativement obscures et difficiles à déchiffrer. Ce premier article de décryptage de ce sujet s’attachera à éclaircir un premier niveau de verrou : les verrous de type Page. Continuer la lecture
COUNT(*)
Le mot clé COUNT correspondant à une fonction d’agrégation permettant de comptabiliser le nombre d’enregistrements d’un jeu de résultats. Toutefois, lorsqu’il s’agit simplement de connaître le nombre d’enregistrements d’une table, il y a bien plus rapide et plus efficace… Continuer la lecture
Injection de Code SQL
Lorsque l’on parle de traitements réalisés en SQL dynamique, l’un des risques souvent présentés est l’injection de code. Voici un papier qui vous présentera un petit exemple simple d’injection de code SQL. Continuer la lecture
Trigger Ensembliste
Suivant les expériences et sensibilités de chacun, les Déclencheurs (Triggers en anglais) sont acceptés et utilisés par certains, ou fuis comme la peste par d’autres.
Outre l’architecture technique permettant parfois d’exclure les codages sous forme de déclencheurs, il est aussi indispensable de bien comprendre le principe de fonctionnement des déclencheurs afin de ne pas laisser traîner des bugs qui seront très difficiles à corriger. Continuer la lecture