Voici une petite requête qui retourne la répartition de la mémoire allouée aux données pour toutes les bases de données d’une instance SQL Server :
Lire la suite
Utiliser le séparateur « pipe » avec l’utilitaire BCP
Si l’on tente d’exécuter l’instruction suivante :
bcp « SELECT query_plan FROM ELSUKET.dbo.unTable » queryout « C:\toto.txt » -c -t| -T -S ELSUKET
dans une fenêtre d’invite de commandes ou bien à l’aide de la procédure stockée xp_cmdshell, nous obtenons l’erreur :
‘-T’ is not recognized as an internal or external command, operable program or batch file.
Comment faire pour éviter cela ? C’est très simple : Lire la suite
Lazywriter, Checkpoint & Ghost Cleanup : Le Bon, La Brute et Le Truand de la gestion mémoire de SQL Server
Toute modification de données se fait d’abord sur les pages de la base de données qui sont en mémoire.
Toute page qui subit une modification mais qui n’a pas encore été copiée sur disque dur est alors qualifiée de « sale », ou « dirty » dans la littérature.
En effet, SQL Server, comme la plupart des SGBDR, travaille exclusivement en mémoire vive, pour la simple raison que son accès est au moins 1000 fois plus rapide qu’un accès aux disques durs, si performants qu’ils soient.
Mais alors comment sont persistées ces changements sur les disques durs qui supportent la base de données ?
Lire la suite
Le reconstruction des index et la mise à jour des statistiques de colonnes
Lors de la reconstruction des index (ALTER INDEX … REBUILD), les statistiques de colonne qui constituent la clé de l’index sont recalculées avec l’échantillonnage maximal.
Que se passe-t-il si par la suite on souhaite mettre à jour les statistiques pour les colonnes non-indexées ?
Lire la suite
Rechercher les index inutiles
Si les index représentent l’optimisation la plus simple à mettre en place, on souhaite néanmoins conserver le minimum d’entre-eux, car leur maintenance lors de l’exécution de requêtes de modifications de données (INSERT, UPDATE, DELETE) peut être coûteuse, surtout sur des tables volumineuses.
Voyons comment collecter cette information …
Lire la suite
Activer et configurer le coordinateur de transactions distribuées : le service MSDTC
Pour exécuter des transactions explicites (à plusieurs instructions) depuis SQL Server vers un autre serveur de base de données, nous devons configurer un serveur lié qui représente une abstraction du serveur distant vue par le serveur local, et activer le service de coordination des transactions distribuées.
La configuration de ce service est assez camouflée à l’utilisateur …
Voyons comment y accéder et paramétrer ce service :
Lire la suite
Sur quelles colonnes sont collectées les statistiques ?
Voici une petite requête qui permet de connaître les colonnes sur lesquelles sont collectées les statistiques.
Elle est assez utile pour les statistiques créées autmatiquement, dont le nom est assez abscons (_WA_Sys_….)
Lire la suite
Trouver les requêtes en cours de blocage
Il est utile de voir quelles sont les ressources mises en jeu dans le blocage de requêtes en cours d’exécution dans une instance SQL Server.
Voici donc une requête retournant quelques informations relatives aux requêtes bloquées par d’autres :
Lire la suite
Obtenir la liste des deadlocks rétrospectivement
Voici une requête qui permet de retrouver la liste des deadlocks qui ont eu lieu dans une instance SQL Server.
Elle se base sur la session d’événements étendus par défaut de SQL Server 2008…
Lire la suite
Lister les colonnes des index d’une base de données
Voici une petite requête qui permet de lister les colonnes de tous les index d’une base de données, avec leur type et l’ordre des colonnes dans la clé de l’index :
Lire la suite