Conseils et formations : vos deux atouts pour réussir !
Accueil > DBA > Messages > Utilisation de SQLH2
Utilisation de SQLH2

Qu'est-ce que SQLH2 ?


C'est un outil d'analyse de performances essentiellement développé pour SQLServer2000 et SQLServer2005.

Comment cela marche-t-il ?


Le principe est de collecter des informations de performances (Collector) et de les stocker dans une base de données SQLServer pour analyse au moyen de requêtes, ou mieux d'états Reporting Services.
Pour récupérer ces outils se connecter sur :
http://www.microsoft.com/downloads/Search.aspx?displaylang=en
(la version Française n'existe pas )

Téléchargement des composants de SQLH2

 


Cliquer sur le lien des downloads SQLServer2005.


Dans la boite de recherche, saisissez :


qui doit vous donner les 3 paquets à récupérer :


Nous avons là :
le programme principal de collecte de données
un programme optionnel de collecte de données de compteurs supplémentaires
les états Reportng Services évoqués plus haut

Installation du programme de collecte:

 

 

 

 

 



avec everyone, j'évite les problèmes de droits qui pourraient se poser (SQLH2 est un outil en lecture seule)



L'assistant de configuration se lance :

 


On pourrait mettre la base de données du Repository ailleurs ou la renommer...



Microsoft nous demande notre participation....

 



On indique ici la liste des serveurs (SQL ou non) à surveiller.
Mon serveur est par défaut pré-saisi.



Ceci pour configurer la tâche automatique de collecte.




Voilà, la base est créée et la tâche de collecte configurée.

Vous devez avoir une tâche planifiée de plus sur votre système :

 


ATTENTION : ne lancez pas cette tâche tout de suite : il y a une modification à faire pour nous autres pauvres Français :


Explications :
L'indicateur /DDMY est le format de la date JOUR MOIS AN
Par défaut les développeurs Américains travaillent en MDY aussi, les requêtes SQL se 'planteraient' avec
une conversion invalide de char en datetime si vous ne mettiez pas cet indicateur.

L'indicateur /d signale à SQLH2 de sous-traiter à BCP (Bulk Copy Program) certains chargements de données en utilisant le format de date du poste client (DMY dans notre cas)

22/09/2006 11:36:49 Status: Collecting Win32_Processor
22/09/2006 11:36:51 ERROR: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
The statement has been terminated.


* Il y a un log d'erreurs au format texte dans le répertoire d'installation de SQLH2.
J'ai eu également une erreur* sur une requête interne de SQLH2 du style :
select * from Win32_product
invallid class
Ceci vient du fait que , sur la machine que je testais, le fournisseur Windows Installer WMI n'était pas installé
Si cela vous arrive :
Panneau de configuration
Ajout/Suppression de programmes
Ajouter ou supprimer des composants Windows

 


Il FAUT le fournisseur WindowsInstaller WMI

Voilà vous pouvez lancer la collecte....


après la collecte les tables de la base sont remplies d'informations de performances et volumétrie :

 


Regardons le contenu d'une de ces tables (ici la table c_database):


maintenant, toutes ces informations demandent un peu de présentation et c'est là où les états RS interviennent :

Installation des états Reporting Services


Ces états nécessitent des scripts préalables :
. Création des objets tables
. Création des procédures nécessaires aux états

Etats et scripts sont dans ReportV2.cab :


Sur la base SQLH2Repository passons d'abord New Dictionnaries.sql puis Reporting Procs.sql

    create table dbo.d_DomainRole (

    DomainRole int NOT null primary key,

    name nvarchar(256) NOT null

    )

    go

 

    insert d_DomainRole (DomainRole, name) values (0,'Standalone Workstation')

    insert d_DomainRole (DomainRole, name) values (1,'Member Workstation')

    insert d_DomainRole (DomainRole, name) values (2,'Standalone Server')

    insert d_DomainRole (DomainRole, name) values (3,'Member Server')

    insert d_DomainRole (DomainRole, name) values (4,'Backup Domain Controller')

    insert d_DomainRole (DomainRole, name) values (5,'primary Domain Controller')

    go

    .....

 

    set QUOTED_IDENTifIER OFF

    go

    set ANSI_nullS ON

    go

 

 

    create proc dbo.sprep_get_start @srv_id int, @inst_id int, @start datetime=0 OUTPUT As

    begin

    declare @sql_min datetime

 

    select @sql_min = min(start) from c_sql_outage where srv_id=@srv_id and inst_id=@inst_id

    set @start = dbo.fn_max_datetime (@start, @sql_min)

    end

    go

 


Ensuite, avec ReportManager, il nous faut créer la source de base de données :

 


Ensuite , créons un dossier pour les états (je n'apprécie guère que tout soit à la racine...)

 



et enfin, téléchargeons les états livrés avec SQLH2 :



..... pour chaque état ....

la source de données de chaque état doit pointer sur la source de données partagées crée plus haut :

 

Exploitation des états Reporting Services


Et voilà les états que l'on peut obtenir :

 


Je ne vous montre pas tous les états, mais il y a pas mal de choses à découvrir, l'intérêt de ces états étant d'avoir une vision GLOBALE du système sans avoir à regarder dans chacune des bases de données.

Conclusion


Voilà un outil qui ne demande qu'à s'améliorer (je pense en particulier au programme d'installation) mais qui devrait déjà donner à certains d'entre vous des informations intéressantes à moindre effort...

Commentaires

Aucun commentaire sur ce message.