Organisation physique des lignes de données d’une table HEAP et d’une table avec index cluster

Si vous êtes administrateur de bases de données SQL Server vous connaissez certainement les tables HEAP (Tables ne possédant pas d’index cluster) et à contrario les tables possédant un index cluster. Savez vous seulement comment sont organisées les lignes d’une de ces tables dans les pages de données ? La plupart de la documentation que j’ai pu voir dit qu’une table possédant un index cluster voit ses lignes de données ordonnées physiquement selon la définition de ce même index cluster.. Est ce vraiment le cas ? Je vous propose dans ce billet une tentative de réponse .

Lire la suite

Utiliser WMIC pour connaître le nombre physiques de processeurs avant l’installation de SQL Server

Avec les nouvelles architectures multicoeurs des processeurs actuels il est devenu difficile depuis le système d’exploitation de connaître l’architecture physique des processeurs d’un serveur. Le gestionnaire de périphérique de Windows nous offre une vue logique de l’architecture processeur qui peut être trompeuse. Par exemple lorsque celui-ci affiche 4 CPU rien ne dit à priori que nous avons à faire à 4 processeurs physiques ou 2 processeurs physiques dual-core. Quelques fois il arrive que la description donnée au processeur peut nous mettre sur la voie mais ce n’est pas toujours le cas. Il existe également des outils tiers qui permettent de donner précisément ces informations comme ceux fournis par sysinternals mais encore faut il les avoir sous la main ou qu’il soit permis de les utiliser sur les serveurs d’un client par exemple. Heureusement Windows, au moyen des WMI permettent de retrouver rapidement cette information. Je pars du principe que SQL Server n’est pas encore installé auquel cas nous aurions pu utiliser la DMV sys.dm_os_sys_info pour retrouver cette information.

Lire la suite

Histoire d’index : Importance du choix d’un index cluster avec SQL Server

Le choix d’un index cluster est important pour une table de données. Des bonnes pratiques existent et permettent d’orienter ce choix. Dans ce billet je tenterais d’en expliquer la raison tout en expliquant le fonctionnement interne de ces index et les conséquences d’une mauvaise stratégie de ce type d’indexation. Je ne prétends pas donner la liste exhaustive des bonnes pratiques sur ce point mais d’en donner une première analyse :-)

Lire la suite

Auditer l’espace physique et utile de l’ensemble des fichiers d’une base de données

Une des tâches d’un administrateur de bases de données consiste à surveiller la taille des données dans un fichier d’une ou plusieurs bases de données. Un fichier de données dimensionné pour une durée d’exploitation conséquente contient de l’espace inutilisé. Dans ce cas là comment surveiller l’évolution des données à l’intérieur de ce fichier ? Un script proposé par Elsuket permet de surveiller les fichiers d’une base de données en particulier. Le code qui suit est une évolution du précédent : vous pouvez auditer l’ensemble des fichiers d’une base de données.

Lire la suite

TSQL CHALLENGE 23

Le 23ème challenge de la série est en ligne sur TSQL Challenges.

Il s’agit une fois de plus dans ce challenge de travailler avec des dates. Vous devez créer un rapport d’audit concernant les durées d’activités et d’inactivé d’une application en vous servant de données de log d’application.

Important : La solution doit se présenter sous la forme d’une seule requête … (SELECT et éventuellement WITH).

Vos réponses doivent impérativement être envoyés avant le 22 février 2010 minuit . Comme d’habitude nous espérons que ce challenge vous amusera.

Bon amusement !!

David BARBARIN (Mikedavem)
Elève ingénieur CNAM Lyon

TSQL CHALLENGE 22

Le 22ème challenge de la série est en ligne sur TSQL Challenges.

Pour rappel, ces challenges ont pour vocation de vous distraire, et éventuellement, de vous faire progresser sur tel ou tel point particulier.

Cette fois-ci, il s’agit de placer des ballons dans des boîtes en fonction de certaines règles… Je vous invite à y jeter un coup d’oeil !

Important : Il est possible de réaliser ce challenge en utilisant plusieurs requêtes et non une seule comme auparavant. Vous pouvez également utiliser les RBAR, curseurs, boucles etc … de votre choix mais vous ne pouvez pas créer d’objets supplémentaires telles que les procédures, fonctions, vues … Gardez cependant à l’esprit l’objectif premier des TSQL Challenges : Vos requêtes doivent être les plus performantes possibles !!

Vos réponses doivent impérativement être envoyés avant le 8 février 2010 minuit. Comme d’habitude nous espérons que ce challenge vous amusera.

Bon amusement !!

David BARBARIN (Mikedavem)
Elève ingénieur CNAM Lyon

Connaître les types de pages gérées par SQL Server

Pour bien commencer cette nouvelle 2010, j’ai envie de commencer par un billet concernant les types de pages que l’on peut rencontrer sur SQL Server. Depuis quelques temps, je m’intéresse beaucoup au fonctionnement interne de SQL Server. Etant amateur de voiture, je ferais une brève analogie. Il n’est pas indispensable de connaître en détail le fonctionnement d’une voiture pour pouvoir la conduire. Cependant si vous êtes passionné ou tout simplement curieux, vous aurez envie un jour ou l’autre de soulever le capot… Il en va de même pour SQL Server. Administrer SQL Server ne demande pas de connaître précisément le comportement interne du moteur. Cependant « maîtriser » le fonctionnement des processus internes du moteur ne peut qu’aider dans la maîtrise et le perfectionnement dans l’administration et la conception des bases de données avec SQL Server. J’en suis intimement convaincu. Dans ce billet je commencerais par aborder le thème suivant : Les types de pages que gèrent SQL Server. Nous verrons par la même occasion les différentes commandes permettant d’en visualiser le détail des pages comme DBCC PAGE, DBCC IND ou DBCC EXTENTINFO .

Lire la suite

TSQL CHALLENGE 21

Le 21ème challenge de la série est en ligne sur TSQL Challenges.

Pour rappel, ces challenges ont pour vocation de vous distraire, et éventuellement, de vous faire progresser sur tel ou tel point particulier.

Cette fois-ci, le scénario est le suivant :
Une banque a décidé de numériser ses documents avec un ancien scanner. Celui-ci produit un fichier texte avec un numéro client mais sous une forme d’image de digits avec un ensemble de 3 symboles : l’espace, l’underscore et le pipe. Le challenge consiste à déterminer le numéro du client correspondant.

Ce challenge et les suivants auront tous un but commun: écrire du code ensembliste, en transformant un jeu de données en un autre.

Vos réponses doivent impérativement être envoyés avant le 25 janvier 2010 minuit. Comme d’habitude nous espérons que ce challenge vous amusera.

Bon amusement !!

David BARBARIN (Mikedavem)
Elève ingénieur CNAM Lyon

TSQL CHALLENGE 19

Le 19ème challenge de la série est en ligne sur TSQL Challenges.

Pour rappel, ces challenges ont pour vocation de vous distraire, et éventuellement, de vous faire progresser sur tel ou tel point particulier.

Cette fois-ci, il s’agit de traiter un problème courant d’entreprise en générerant une hiérarchie d’organisation ainsique que le calcul du montant total des commandes créées par chaque salarié et à ses subordonnés.
Ce challenge et les suivants auront tous un but commun: écrire du code ensembliste, en transformant un jeu de données en un autre.

Ce challenge et les suivants auront tous un but commun: écrire du code ensembliste, en transformant un jeu de données en un autre.

Vos réponses doivent impérativement être envoyés avant le 28 décembre 2009 minuit. Comme d’habitude nous espérons que ce challenge vous amusera.

Bon amusement !!

David BARBARIN (Mikedavem)
Elève ingénieur CNAM Lyon

TSQL CHALLENGE 18

Le 18ème challenge de la série est en ligne sur TSQL Challenges.

Pour rappel, ces challenges ont pour vocation de vous distraire, et éventuellement, de vous faire progresser sur tel ou tel point particulier.

Cette fois-ci, il s’agit de générer un calendrier pour un nombre de mois déterminé.  
Ce challenge et les suivants auront tous un but commun: écrire du code ensembliste, en transformant un jeu de données en un autre.

Vos réponses doivent impérativement être envoyés avant le 14 décembre 2009 minuit. Comme d’habitude nous espérons que ce challenge vous amusera.

Bon amusement !!

David BARBARIN (Mikedavem)
Elève ingénieur CNAM Lyon