> SQL Server
Optimisation des bases de données SQL Server : l’exploitation

Optimisation des bases de données SQL Server : l’exploitation

Votre modèle des données est parfait : justement normalisé et très légèrement dénormalisé par des techniques fiables et pour des données dont il est prouvé que cela apporte un gain significatif. Vos requêtes sont optimisées et les serveurs, tant logiques que physiques, comme leurs environnements sont taillés, dimensionnés, mesurés, configurés pour le volume de données et de transactions à subir. Enfin, vous avez pensé au découpage de vos espaces de stockage, choisi vos disques et constitué vos agrégats en conséquence… Pourtant il vous manque une brique pour parfaire votre oeuvre : penser l'exploitation de vos données au quotidien, c'est là SQL Server sur le site communautaire de developpez.com, un internaute postait un remarquable message. Il avait une procédure complexe longue et coûteuse en traitement qui importait des données dans une base, avec une planification quotidienne de nuit. Un matin quelle ne fût pas sa stupeur de constater que cette procédure qui durait habituellement un peu plus d'une heure, n'était pas encore terminée. Il attendit donc la fin du traitement et constata que ce dernier avait mis près de 10 heures, soit 8 fois plus qu'ordinairement. Que s'était-il passé ?

Contenu complémentaire

Numéro hors série : Gestion et optimisation des environnements multi bases de données
Le site du groupe utilisateurs de SQL Server : le GusS

Lire l'article
Prenez le contrôle de vos rapports avec ReportViewer

Prenez le contrôle de vos rapports avec ReportViewer

Visual Studio 2005 constitue la clé de voûte de toutes ces fonctionnalités. Il s’agit d’un outil souple, utilisable dans les Windows Forms et formulaires Web pour afficher deux types de rapports. Le premier type est un rapport côté serveur, qui nécessite un serveur de rapports SSRS.

Ce dernier fournit les valeurs des paramètres du rapport, crée les datasets et assure le rendu. Le contrôle ReportViewer affiche ensuite le rapport rendu dans une fenêtre d’application. Lorsque vous créez des rapports côté serveur, vous utilisez le mode de traitement distant. Le deuxième type est un rapport local. Ces rapports sont distribués en tant que partie intégrante d’une application et ne requièrent pas de serveur SSRS. Toutefois, le fait de s’affranchir du lien à un serveur de rapports a un coût. L’application doit fournir les valeurs pour les paramètres du rapport et créer tous les datasets. Le contrôle ReportViewer assure le rendu du rapport. Lorsque vous optez pour cette approche, vous utilisez le mode de traitement local.

Lire l'article
Sécurité SQL

Sécurité SQL

IBM a intégré en douceur la sécurité SQL à la panoplie de sécurité System i existante. Ces fonctions SQL ne se contentent pas d’imiter les mesures de sécurité existantes : elles les étendent et les renforcent. SQL connaît une rapide croissance et devient un langage de plus en plus incontournable pour tous les développeurs System i. Cet article actualise vos connaissances en sécurité SQL.
La sécurité SQL repose sur deux piliers : les deux instructions GRANT et REVOKE. En termes très simples, ces instructions SQL correspondent aux commandes CL Grant Object Authority (GRTOBJAUT) et Revoke Object Authority (RVKOBJAUT). Quand vous exécutez une instruction SQL GRANT ou REVOKE, vous utilisez des mots-clés pour octroyer ou révoquer des privilèges à un objet SQL. Sous le capot, le fait d’octroyer des privilèges SQL revient à octroyer une ou plusieurs autorités i5/OS à un ou plusieurs objets i5/OS.

Contenu complémentaire :

Automatisez vos audits de sécurité
Construisez vos propres systèmes de sécurité automatisés
Sécuriser votre base de données avec le point de sortie Open Database File

Lire l'article
Construisez un système ETL simple avec SSIS

Construisez un système ETL simple avec SSIS

Vous savez probablement que vous pouvez utiliserun entrepôt de données (data warehouse).Mais comment allez-vous procéder ? À quoi ressemble une application ETL ?SSIS se targue de proposer tellement de nouveautés que les nouveaux venus ont l’impression d’avoir déballé un puzzle sur leur bureau. Il est difficile d’assembler les pièces sans avoir sous les yeux une vue d’ensemble du résultat final, notamment lorsque les pièces d’autres puzzles viennent jouer les trouble-fêtes ou lorsque certains éléments manquent !

L’objectif de cet article est justement de fournir la vue d’ensemble nécessaire : nous allons aborder les opérations élémentaires de conception et de construction de packages SSIS, et ainsi fournir les bases pour l’étude ultérieure des techniques de chargement incrémentiel concernant les dimensions et faits, ainsi que les variables, les scripts et l’audit de base des processus.

Lire l'article
Les compléments d’exploration de données SQL Server 2005 pour Office 2007

Les compléments d’exploration de données SQL Server 2005 pour Office 2007

De nombreux outils d’analyse s’intègrent à SQL Server 2005 offrent des fonctionnalités puissantes pour l’analyse des données, mais c’est seulement depuis peu que Microsoft propose des outils standard pour apporter les possibilités du data mining sur le poste de travail.En février 2007, l’éditeur de Redmond a lancé les compléments d’exploration de données pour Office 2007. Ceux-ci permettent d’exploiter les fonctions d’analyse prédictive de SQL Server 2005 dans Excel 2007 et Microsoft Office Visio 2007. Dans cet article, nous allons examiner l’installation et la configuration de ces compléments et développer un exemple complet. Nous nous attarderons plus spécifiquement sur l’un des outils complémentaires, à savoir le client d’exploration de données pour Excel (Data Mining Client for Excel).

Contenu complémentaire :

- Développez votre connaissance de l'analyse décisionnelle
- Data Mining Reloaded

Lire l'article
Placez les données de vos cubes sur le devant de la scène

Placez les données de vos cubes sur le devant de la scène

une autre perspective de leurs données. Cette capacité peut s’avérer importante lorsque les rapports doivent afficher un grand nombre de mesures et se servent des dimensions en tant que tranches de données.

Par exemple, un rapport qui présente plusieurs mesures pour un seul employé ou produit n’a pas besoin de reprendre cette même information sur les lignes ou dans les colonnes. Par conséquent, nous allons voir comment placer les mesures sur les lignes et une autre dimension, Time, dans les colonnes, tout en réalisant les tranches à partir d’une autre dimension. Nous allons également expliquer comment paramétrer une requête MDX et appliquer un formatage aux valeurs.

Lire l'article
Guide pour traiter les erreurs de SQL imbriqué

Guide pour traiter les erreurs de SQL imbriqué

Dès lors que SQL se généralise dans les applications de production, il importe de bien vérifier et traiter les erreurs des instructions SQL imbriquées. Quand vous codez des instructions SQL imbriquées dans un langage évolué, tel que ILE RPG ou ILE Cobol, vous devez toujours vérifier la bonne fin de chaque instruction SQL exécutable, puis traiter comme il se doit les éventuelles conditions inattendues. Cet article fournit quelques conseils, techniques et profils de coding qui facilitent considérablement cette tâche.
En matière de programmation SQL imbriquée, il faut observer une règle simple : vérifier la valeur SQL state aussitôt après chaque instruction SQL exécutable du programme. Quand le SQL runtime revient à votre programme après avoir tenté d’exécuter une instruction SQL, le runtime définit une variable de programme nommée SQLState pour la valeur SQL state. (Les instructions déclaratives imbriquées, telles que Declare Cursor, et les directives de précompilateur, telles que Set Option, ne sont pas exécutées par le SQL runtime, et donc elles ne contribuent jamais à définir SQL state.)

SQL state est un code de cinq caractères présentant la structure suivante : XXYYY, où
• XX désigne la classe
• YYY désigne la sous-classe

Les significations des valeurs classe sont les suivantes :
• 00 – instruction correctement exécutée sans condition
• 01 – instruction correctement exécutée avec avertissement
• 02 – l’instruction n’a traité aucune donnée
• 03 à ZZ – l’instruction a échoué à cause d’une erreur

A propos de ces classes, on peut noter plusieurs choses. La classe « 00 » ne contient que la valeur SQL state « 00000 », donc on peut tester la chaîne entière plutôt que la seule classe.

Pour plusieurs des valeurs SQL state dans la classe « 01 », divers avertissements et erreurs column-level peuvent être indiqués par une valeur positive dans la variable d’indicateur null associée à une variable hôte. Les erreurs column-level potentielles incluent la troncature de chaîne et de date heure, les erreurs arithmétiques, les erreurs de conversion de caractères et les erreurs de mapping de données. Le sujet « References to host variable » du manuel SQL Reference fournit une description complète des paramètres de variables indicateurs. S’agissant de conditions spécifiques aux colonnes, il faut coder les tests pour qu’ils conviennent à l’application en plus de la vérification d’erreurs au niveau instruction montrée dans cet article.

La classe « 02 » inclut le SQL state « 02000 », lequel indique généralement que (1) aucune ligne n’a été renvoyée sur une opération d’entrée, (2) aucune ligne n’a été ajoutée par une opération Insert qui utilise un subselect pour spécifier de nouvelles lignes, ou (3) aucune ligne n’a satisfait à la condition de recherche d’une instruction Update ou Delete. Que l’une de ces conditions soit une erreur ou une condition escomptée, dépend de l’application ; c’est un aspect que votre code de vérification d’erreurs devrait prendre en considération.

La figure 1 fournit une liste complète des valeurs de classe. Le dernier manuel V5 SQL Messages and Codes fournit une liste complète des valeurs SQL state. Ces valeurs se veulent homogènes dans toute la famille IBM DB2 et sont fondées sur le standard SQL 1999. Pour plus d’informations à ce sujet, voir l’encadré « Où trouver des valeurs SqlState et SqlCode ».

Contenu complémentaire :
--> Lire l'article
Le service notification

Le service notification

Avec le service de notification, base de données, ou bien dans un deuxième temps en utilisant l’ajout/suppression de programme du panneau de configuration.

Lire l'article
Coordination de la migration de DTS vers SSIS

Coordination de la migration de DTS vers SSIS

De combien de lots DTS (également appelés packages dans SSIS) êtes vous responsable ? Peut-être 10 ? Ou alors 50 ? Lorsque j’ai posé cette question au cours d’une conférence l’an dernier, quelques auditeurs m’ont franchement surpris en affirmant que leur environnement disposait de plus de 2000 lots DTS ! Etait-il irresponsable de ma part de leur souhaiter bonne chance pour leurs opérations de migration ? Peut-être. Néanmoins, si vous avez des centaines de lots DTS, vous devez savoir que vous n’êtes pas seul. DTS est réputé pour sa simplicité et son utilité et, en fait, de nombreuses organisations l’ont adopté pour sa capacité à générer rapidement et simplement des traitements de données.
Que vous ayez 10 lots DTS ou plusieurs centaines, vous allez probablement vous préparer à une migration inévitable vers SQL Server 2005 Integration Services (SSIS). Toutefois, au cours de vos tests et de vos recherches, les points d’achoppement sont devenus apparents : l’architecture du produit diffère de celle de SQL Server 2000 DTS, d’où une procédure de migration plus complexe qu’une simple mise à niveau, et même après la migration de quelques packages, vous pouvez vous retrouver avec un gain minime de performances. Et qu’en est-il si vous examinez des dizaines ou des centaines de lots ? Vous allez vous préparer de nombreuses nuits sans sommeil. Pourtant, vous trouverez une lumière au bout du tunnel, et celle-ci sera rayonnante. L’atteindre ne sera peut-être pas aussi difficile que vous le croyez. En fait, maintenant que SQL Server 2005 a plus d’un an de service, les ressources et les connaissances disponibles pour vous aider au cours du processus sont plus étoffées. (Pour obtenir un b.-a.-ba utile sur la question, consultez l’article « Ascension vers SQL Server 2005 », sur le site http://www.itpro.fr Club Abonnés, Hors Série SQL Server 2005, novembre 2005 ainsi que l’encadré « Votre première étape » de cet article.) Mais ne vous contentez pas de prévoir une simple migration des lots DTS vers SSIS. Apprêtez-vous plutôt à exploiter pleinement les fonctionnalités améliorées de SSIS.

IT Technical center : SQL Server 2005 - Guide des ressources complémentaires

Lire l'article
Automatisez vos audits de sécurité

Automatisez vos audits de sécurité

SQL Server ? Fort heureusement, il existe des mesures permettant de réduire sensiblement les risques. Vous pouvez prévenir (ou au moins limiter) de nombreuses attaques SQL simplement en vérifiant initialement que vos bases de données et serveurs sont sécurisés comme il se doit.
La configuration de tous les ports d’écoute est-elle appropriée ? Avez-vous désactivé l’ensemble des bibliothèques réseau superflues ? Avez-vous pensé à supprimer les anciens fichiers de configuration SQL Server ? Et la liste ne s’arrête pas là.
Admettons-le, il faut du temps pour sécuriser tous les points de contrôle jusqu’au dernier et pour conserver une longueur d’avance sur les personnes malintentionnées. Chaque jour apporte son lot de nouvelles vulnérabilités concernant la sécurité, d’où la nécessité d’ajouter de nouveaux contrôles et d’effectuer une surveillance fréquente pour rester à l’abri des mauvaises surprises.
Dans ces circonstances, il serait épatant de pouvoir automatiser quelque peu toutes ces tâches d’audit longues et fastidieuses. C’est désormais possible si vous appliquez les techniques simples exposées dans cet article et si vous adaptez le code fourni à votre situation spécifique.

Lire l'article
Optimisation des bases de données MS SQL Server : les requêtes

Optimisation des bases de données MS SQL Server : les requêtes

En théorie, quelle que soit la façon d'écrire une requête, le SGBDR doit être capable de trouver le moyen le plus efficace de traiter la demande, grâce à l'optimiseur. Mais parce qu'il y a loin de la théorie à la pratique, différentes écritures et différents styles de résolution, alliés à la qualité de l'indexation peuvent donner des temps d'exécution très variés.
C'est pourquoi la maîtrise de la conception de requêtes est un des points clefs de la performance d'une base de données bien conçue. Voyons quels en sont les principes basiques.
Dans un cours que je donne aux Arts & Métiers, je montre comment une bonne indexation alliée à la qualité de l'écriture des requêtes, peut faire varier dans une proportion de plus de 300 le temps d'exécution d'une requête. Je commence l'exercice par une demande simple : écrire une requête SQL permettant de répondre à une question basique, mais en prenant soin d'exprimer différentes solutions, même les plus bizarres.

Outre la solution simpliste, certains y arrivent par une union, d'autres avec des sous requêtes, d'autres encore avec des jeux de CASE... L'exécution brute de toutes ces solutions, donne un coût d'exécution allant du simple au triple. La pose d'un premier index trivial ne donne rien, par manque de sélectivité. Après élimination de cette première tentative, la pose d'un nouvel index montre que les requêtes les plus coûteuses au départ deviennent les plus rapides, alors que celles qui étaient les moins coûteuses à l'origine n'ont rien gagné. Un nouvel essai d'indexation remet toutes les requêtes au même rang qu'au départ, chacune gagnant dans la même proportion et plus que l'indexation précédente.

Enfin, la dernière tentative d'indexation étant la bonne, toutes les requêtes bénéficient d'un gain important, mais certaines bien plus que d'autres. Le clou est enfoncé lorsque l'on choisit de dénormaliser avec une vue. Là, le gain devient gigantesque. Il est voisin de 13 000. Mais il ne prend pas en compte l'effort supplémentaire à faire pour les mises à jour (INSERT, UPDATE, DELETE...).

Cet exercice nous apprend trois choses :
• différentes écritures d'une même requête ne donneront pas forcément les mêmes performances, bien que dans l’absolu, ce devrait être le cas [1]
• rien ne sert de poser un index s'il ne sert pas la requête
• une même requête écrite de différentes manières ne bénéficiera pas des mêmes gains lorsque l’on pose un index J’ajouterai que tout ceci évolue en fonction de la volumétrie des données et des données mêmes !

Tant est si bien qu’il est difficile de trouver de prime abord ce qu’est l’écriture d’une bonne requête. Affirmons cependant qu’une bonne requête est une requête qui sait tirer partie du moteur de requête pour le forcer à calculer un plan de requête dont les étapes sont les plus courtes à traiter.

[1] En fait, nous croyons souvent et naïvement que certaines écritures de requêtes sont identiques. Mais nous oublions souvent l’influence du marqueur NULL, dont le comportement particulier dans différents prédicats oblige le moteur SQL à des constructions parfois fort différentes.

Lire l'article
XML et SQL SERVER

XML et SQL SERVER

Les informations échangées entre les différents systèmes, les différentes applications le sont de plus en plus auSQL Server, se sont adaptées. En effet, SQL Server à, entre autre, pour objectif de faciliter le travail avec les données. Pour cela, SQL Server dispose d'un ensemble d'instructions pour extraire des informations relationnelles au format XML ou bien l'opération inverse qui consiste à lire des données au format XML afin de stocker les informations dans une structure relationnelle classique.

Ces 2 étapes sont nécessaires et permettent de confier au moteur de base de données la plupart des transformations depuis ou vers le format XML à SQL Server. Mais SQL Server propose plus en offrant la possibilité de créer des colonnes de type XML. En intégrant directement les informations XML dans la structure relationnelle classique, SQL Server offre plus de souplesse en terme de stockage. Ce type XML est bien plus qu'un simple champ texte car SQL Server rend possible l'indexation des colonnes de type XML mais également la mise à jour, l'ajout et la suppression de données dans le document XML lui-même.

Ce sont ces trois fonctionnalités (extraire les informations au format XML, importer des données XML, stocker des données au format XML) de SQL Server qui sont exposées ci-dessous.

Lire l'article
SQL 2008 : nouveaux types de données

SQL 2008 : nouveaux types de données

SQL Server 2008 propose donc une gestion optimisée de ces éléments avec les types: goemetry, geography et filestream. Mais ce n'est pas la seule évolution proposée par SQL Server 2008 au niveau des données. En effet, SQL Server 2008 propose une gestion plus fine des données de type date et heure en proposant différents types de données. SQL Server 2008 offre également la possibilité de gérer correctement les données hiérarchiques par l'intermédiaire du type hierarchyid et les différentesméthodes associées.

Mais avant de commencer à présenter ces différents points, il est important, de souligner, que lorsque vous écrivez du code Transact SQL depuis SQL Server Management Studio (SSMS) le complément automatique du code est maintenant actif. L'avantage est double car il évite les erreurs de saisie et permet également d'écrire plus rapidement le code. Il n'y a maintenant plus de doute possible quant à l'orthographe exacte d'une variable ou bien le nom d'une méthode.

Lire l'article
SQL Server 2008, au service de la productivité

SQL Server 2008, au service de la productivité

SQL Server 2008 est la nouvelle version de la plateforme de gestion et d'analyse de données de Microsoft. Elle renforce les scénarios déjà couverts par SQL Server 2005 et en couvre de nouveaux comme nous l’explique Lionel Billon, chef de produit SQL Server Microsoft France.

Lire l'article
5 étapes pour développer et déployer du code CLR dans SQL Server

5 étapes pour développer et déployer du code CLR dans SQL Server

Itzik Ben-Gan vous présente comment développer et déployer du code CLR dans SQL Server

Lire l'article
CLR or not CLR telle est la question ?

CLR or not CLR telle est la question ?

L’intégration du CLR (Common Language Runtime) .NET dans SQL Server. Afin de faciliter le travail, je fournis le code .NET en C# et en VB.NET, et tous les exemples sont téléchargeables dans le Club Abonnés d'iTPro.fr.

Lire l'article
Des évolutions très appréciées… pour une plate-forme d’entreprise innovante !

Des évolutions très appréciées… pour une plate-forme d’entreprise innovante !

Au cours de ces dernières années,Visual Studio n’est pas en reste non plus !Chronique d’une « plate-forme d’entreprise » annoncée…

Lire l'article
La bataille de la fragmentation: les clés de la victoire

La bataille de la fragmentation: les clés de la victoire

Il y a quelques mois, j’ai été réveillé par la sonnerie insistante de mon terminal BlackBerry, laquelle m’informait que j’avais un message de priorité élevée. Tous les clients qui utilisaient l’une de mes bases de données m’appelaient pour se plaindre que notre application Web nécessitait 20 à 30 secondes pour charger les pages qu’ils consultaient le plus fréquemment.Les performances s’étaient dégradées progressivement au cours des dernières semaines et en étaient à un point tel que la simple connexion de quelques utilisateurs provoquait l’arrêt du système. Il fallait que je trouve la source du dysfonctionnement et vite. Le présent article explique comme j’ai pu remonter à l’origine du problème, celle-ci étant due, comme j’ai pu le découvrir, à l’action combinée de la fragmentation de tables et fichiers de base de données et d’une mauvaise densité de page. Il présente ensuite les actions prises pour corriger le problème.

Lire l'article
Les bases de la modélisation dimentionelle

Les bases de la modélisation dimentionelle

SQL Server 2005 Analysis Services utilise des dimensions à base d’attributs, de telle sorte que chaque attribut d’une dimension est traité automatiquement en tant que hiérarchie autonome. Désormais, vous pouvez employer la couche des métadonnées qui définit les cubes Analysis Services (le modèle dimensionnel unifié ou UDM) afin de spécifier une dimension client au lieu d’une demi-douzaine de dimensions séparées artificiellement. Un avantage de cette prise en charge plus poussée de l’approche dimensionnelle est que les développeurs de systèmes de data warehouse et d’analyse décisionnelle (BI) n’ont plus besoin de convertir des techniques de modélisation dimensionnelle standard à la vision limitée des anciennes versions de SQL Server. Désormais, vous pouvez construire des dimensions qui représentent de manière réaliste le mode de fonctionnement de votre activité et sont capables d’évoluer en phase avec celle-ci. L’objet de cet article est de définir les modèles dimensionnels, de décrire les éléments de base et les techniques qui les prennent en charge, et de proposer une architecture de données de type dimensionnel pour votre système de data warehouse et d’analyse décisionnelle.

Lire l'article
Fonctionnalité SQL Server 2005 facilement ignorées

Fonctionnalité SQL Server 2005 facilement ignorées

Tout le monde a entendu parler des grandes nouveautés de SQL Server 2005.

Lire l'article