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
Différence entre TOP et TABLESAMPLE
Voici un petit papier pour comparer les mots-clés TOP et TABLESAMPLE, le TOP étant dans les faits trop souvent utilisé là où l’on devrait utiliser TABLESAMPLE…
Il s’agira ici de comparer à la fois la syntaxe d’utilisation, les effets et aussi les performances. 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
Doublons d’index
Sous SQL Server, les index permettent d’optimiser l’accès aux données, notamment dans le contexte des lectures.
Néanmoins, il ne faut pas en abuser, car il sont maintenus à jour en mode synchrone lors des opérations de modification de données (ajout / suppression / modification). Il convient notament de vérifier qu’il n’y a pas de doublons d’index ce qui comprend notamment les cas d’index à plusieurs colonnes dont la ou les premières constituent déjà la définition d’un autre index. Continuer la lecture
Index manquants pour les clés étrangères
Dans la série des petites scripts utiles, voici une instruction simple permettant d’identifier les contraintes de clés étrangères pour lesquelles il manque un index dans la table parente. Un tel manque d’index peut parfois provoquer des temps de réponse extrêmement important pour de simples suppressions unitaires d’enregistrements dans une table de référence. Continuer la lecture
Liste des processus actifs
Voici un petit script très utile pour déterminer les requêtes qui sont en train de tourner sur un serveur SQL Server.
En effet, les outils tels que le générateur de profils ou bien les évènements étendus permettent de capter le début ou la fin d’un traitement, mais ne permettent pas de lister les traitements en cours d’exécution. Continuer la lecture
Régénérer les clés étrangères
J’évoquais ici un script de suppression / régénération de clés primaires. Mais une clé primaire ne peut pas être supprimée tant que des clés étrangères s’appuient sur elle. Voici donc un script permettant de générer le nécessaire pour supprimer puis reconstruire les clés étrangères sur une base de données. Continuer la lecture
Générer un script de reconstruction de clés primaires
Dans le même contexte que la reconstruction d’indexes mentionnée ici, voici le script complémentaire lié à la reconstruction de clés primaires. Etant donné qu’il n’existe pas de syntaxe permettant que créer une contrainte de clé étrangère en mode « remplacement », je présenterai ci-dessous un script générant la suppression des contraintes de clé primaire, et un script permettant de les régénérer.
Générer un script de reconstruction d’index
Certaines opérations sur les index ne peuvent pas être réalisées via la commande ALTER. Ainsi, par exemple, la modification de données telles que le taux de remplissage (Fillfactor) ou encore les paramétrages d’autorisation de verrous ligne / page, nécessite le passage par la commande de création CREATE INDEX.
Le problème est qu’il est nécessaire de générer un script de reconstruction des index, en y apportant éventuellement quelques modifications pour notre besoin propre (modifier le taux de remplissage, …). Continuer la lecture