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