SelectEtoile : Base de connaissance SGBD

Posts Tagged 'server'

Petit guide des commandes SYBASE RSE

Guide pratique des commandes système pour Replication Server SYBASE

Sur RSSD Server :

rs_helppartition : état des partitions

rs_helpuser : listing utilisateurs


Sur Replication Server :

admin disk_space : état des espace disque

add partition rrwdev01 on /dev/rwdev01’ with size 512 : ajout partition

alter connection to ‘FP_SV_TTTT’ set parallel dsi to ‘on’ : active le parallelisme

alter connection to ‘FP_SV_TTTT’ set dsi_serialization_method ‘isolation_level_3’ :

suspend connection to ‘FP_SV_TTTT’ with nowait : desactive la connexion

resume connection to ‘FP_SV_TTTT’ : active la connexion

 sysadmin dump_queue,135,0,-1,-1,-1,client : affiche le dernier block de l'outbound queue n°135

 

Sauvegarde toute la inbound queue 103 dans le fichier queue_103.log
sysadmin dump_file, queue_103.log
sysadmin dump_queue, 103, 1, -1, 1, -2
sysadmin dump_file

 

 

 

 

 

Comment récupérer une base à partir du fichier mdf ?

1 Faire une copie des fichiers encore présents de la base de données.
2 Procéder à la création d'une nouvelle base de donnée
Elle devra porter les mêmes noms de fichiers ( .MDF et .LDF) que l'ancienne
3 Stopper le service SQLServer
4 Détruire les fichiers de la base nouvellement créée.
5 Renommer les premiers fichiers de base pour qu'ils correspondent à ceux de la base précédemment créée
6 Redémarrer le service SQLServer.
A ce stade la base de données devrait être active et fonctionner.
Si par contre, elle apparaît en suspect il ne faut pas s'inquiéter. Il faut procéder aux étapes suivantes.
7 Avec l'analyseur de requêtes, se connecter sur le serveur sur la base master et effectuer les commandes suivantes

sp_configure 'allow updates',1
reconfigure with override
UPDATE sysdatabases SET status=32768 WHERE name='bdName'

8 Stopper le service SQLServer.
9 Renommer le fichier Log en .old (ou toute autre extension)
10 Redémarrer le service SQLServer. ( Si ce n'était pas déjà le cas, la base apparaît en 'suspect')
11 DBCC rebuild_log ('bdName','chemin complet et nom du fichier log à reconstruire')
12 UPDATE sysdatabases SET status=0 WHERE name='bdName'
13 Puis pour finir

DBCC checkdb ('bdName ')
GO
DBCC newalloc ('bdName ')
GO
DBCC checkcatalog ('bdName ')
GO

Ceci pour vérifier la cohérence de la base de données

Mise en place d'un Replication Server SYBASE 15

Récupérer la distrib sur le site de sybase

Détarer celle-ci sur la machine dans le répertoire voulu

Modifier le fichier SYBASE.sh (ou SYBASE.csh ou SYBASE.env) pour qu'il est les bons chemins d'accès

Sourcer celui-ci : ". SYBASE.sh"

 

Pour lancer l'installation, 2 solutions s'offrent à vous :

rs_init pour le lancer en mode interactif

  • Il est conseillé de mettre à jour le fichier $SYBASE/interfaces avec les entrées du Replication Serveur et du Serveur hébergeant la base RSSD (base de repository de la réplication)
  • Voici un exemple de définition de ces serveurs
 RSServer
        master tcp ether machine 4100
        query tcp ether machine 4100


RSSDSErver
        master tcp ether machine 4101
        query tcp ether machine 4101

 
  • En fin d'installation, il est possible de générer le fichier de ressource en faisant un "ctrl+w" juste avant le message de lancement "Execute the Replication Server tasks now? y"

rs_init -r ressource_file . Ce fichier contient tous les paramétrages nécessaires à l'installation. Il est généré dans $SYBASE/REP-15_2/init/logs et se nomme 'resource.dmp'.

 

  • De la même façon que le premier point, il est obligatoire de renseigner le fichier $SYBASE/interfaces

 

Exemple de fichier de ressources avec un base RSSD sur ASA (Anywhere) :

sybinit.charset: iso_1

sybinit.language: us_english

sybinit.component_directory: $SYBASE/REP1520/REP-15_2

sybinit.release_directory: $SYBASE/REP1520

sybinit.boot_directory: $SYBASE/REP1520

sybinit.product: rs

sqlsrv.sa_password: USE_DEFAULT

sqlsrv.sa_login: USE_DEFAULT

sqlsrv.master_device_size: USE_DEFAULT

sqlsrv.master_device_physical_name: USE_DEFAULT

sqlsrv.server_name: USE_DEFAULT

sqlsrv.new_config: USE_DEFAULT

rs.rs_operation: rs_install

rs.rs_diskp_size: 2000

rs.rs_diskp_lname: logical_queue01

rs.rs_diskp_name: /rawdevice/physical-queue01

rs.rs_erssd_errorlog_dir: $SYBASE/errorlog

rs.rs_erssd_translog_dir: $SYBASE/REP-15_2/translog

rs.rs_rssd_embedded: yes

rs.rs_erssd_name: RSSDServer

rs.rs_pwd_encryption: yes

rs.rs_idserver_name: RSSERVER

rs.rs_id_server_is_rs_server: yes

rs.rs_rs_errorlog: $SYBASE/errorlog/RSSERVER.log

rs.rs_name: RSSERVER

# -END_ATTRIBUTES-

 

Une fois l'installation finie, il faut se connecter au serveur de Replication. Pour cela, il faut sourcer le fichier $SYBASE/SYBASE.sh et lancer la commande suivante :

isql -Usa -SRSServer -w500

Mot de passe : 'Touche Entrée'. Pas de mot passe à l'initialisation.

Pour le changer, une fois connecté lancer la commande :

alter user sa set password 'newpassword'

go

 

Se connecter ensuite à la base RSSD sur ASA dans notre cas :

isql -URSServer_RSSD_prim -SRSSDServer -w500 -PRSServer_RSSD_prim_ps

On peut créer un login sa sur la  avec les droits d'administration par exemple comme suit :

 grant connect to sa identified by newpwd

go

grant DBA to sa

go

 

 

 

 

 

 

 

 

 

 

 

Les liens pratiques de SQL Server

Cet article contient une liste de sites web pratiques pour l'administration SQLServer

 

Les docs Microsoft SQLServer

Les vidéos microsoft : http://technet.microsoft.com/en-us/sqlserver/ff977043.aspx

 

Gestion du journal de log

Log Management :
http://www.sqlservercentral.com/articles/Stairway+Series/94552/
http://www.sqlservercentral.com/articles/Transaction+Logs/71415/

Log Tuning : http://www.simple-talk.com/sql/database-administration/sql-server-transaction-log-fragmentation-a-primer/

 

Monitoring :

SQLServer Creation d'une alerte/montoring SQLServer : http://www.sqlservercentral.com/articles/SQL+Monitoring/100615/

 

Les partitions

Gestion des partitions : http://www.simple-talk.com/content/article.aspx?article=1587

Ex d'un switch et split de partition : http://blogs.msdn.com/b/sql_pfe_blog/archive/2013/08/13/oops-i-forgot-to-leave-an-empty-sql-table-partition-how-can-i-split-it-with-minimal-io-impact.aspx

 

Les indexes

https://www.simple-talk.com/sql/performance/14-sql-server-indexing-questions-you-were-too-shy-to-ask/?utm_source=ssc&utm_medium=publink&utm_content=indexingquestions

 

Trace Profiler

Mise en place de trace profiler sous SQL SERVER : http://vyaskn.tripod.com/server_side_tracing_in_sql_server.htm

 

AlwaysOn :

http://blogs.msdn.com/b/sqlcat/archive/2014/02/03/alwayson-availability-groups-listener-named-instances-port-numbers-etc.aspx

 

Performances Monitoring :

http://www.databasejournal.com/features/mssql/article.php/3932406/Top-10-SQL-Server-Counters-for-Monitoring-SQL-Server-Performance.htm

http://www.mssqltips.com/sqlservertip/2393/determine-sql-server-memory-use-by-database-and-object/

https://www.simple-talk.com/sql/database-administration/baselining-with-sql-server-dynamic-management-views/

https://www.simple-talk.com/sql/database-administration/eight-steps-to-effective-sql-server-monitoring/

 

Pratique

Comment regrouper un RTM et un SP2 sous SQLServer 2008 (slipstream) : http://blogs.msdn.com/b/petersad/archive/2010/10/14/creating-a-merged-slipstream-drop-containing-sql-server-2008-rtm-and-service-pack-2.aspx

Faire de la pagination sous SQLServer : http://www.databasejournal.com/features/mssql/paging-data-with-tsql.html

 

Change Data Capture

http://www.databasejournal.com/features/mssql/getting-starting-with-change-data-capture-cdc-in-sql-server-part-1.html

Les deadlocks

Surveiller les deadlocks : http://www.opsvault.com/how-to-monitor-deadlocks-in-sql-server/

Des exemples tres detaillés : https://www.simple-talk.com/sql/performance/sql-server-deadlocks-by-example/?utm_source=ssc&utm_medium=publink&utm_campaign=simpletalk&utm_term=additionalarticle

 

Tout sur la base tempdb :

tempdb contention : http://www.sqlservercentral.com/blogs/robert_davis/2010/03/05/Breaking-Down-TempDB-Contention/

 

Hashage / Cryptage :

http://blog.developpez.com/sqlpro/p12496/langage-sql-norme/hachage-nest-pas-cryptage-de-la-securite-des-donnees-chiffrees-dans-les-sgbdr

 

Encryption / Chiffrement...

http://www.dbi-services.com/index.php/blog/entry/transparent-data-encryption-key-management-and-backup-strategies

 

Les traceflags :

Les traceflag sous SQLServer : http://www.sqlservercentral.com/articles/trace+flags/70131/

 

Sauvegarde et restauration

Backup / restore avec powershell : https://www.simple-talk.com/content/article.aspx?article=1802

 

SQLServer 2014 :

New Features : http://www.databasejournal.com/features/mssql/whats-new-with-sql-server-2014.html

AlwaysOn 2014 : http://blogs.technet.com/b/dataplatforminsider/archive/2013/06/27/alwayson-in-sql-server-2014-ctp1.aspx

 

Performances sur les disques :

SSD : http://henkvandervalk.com/maximizing-sql-server-2008-r2-table-scan-speed-from-dsi-solid-state-storage

Tester ces io : https://www.simple-talk.com/sql/database-administration/the-sql-server-sqliosim-utility/

 

Hekaton :

Procedure stockée en code natif : http://msdn.microsoft.com/fr-fr/library/dn424864.aspx

gestion des tables Hekaton : http://conseilit.wordpress.com/2013/07/01/sql-server-2014base-de-donnes-et-premire-table-hekaton/

http://blog.developpez.com/mikedavem/p12490/sql-server-2014/tables-in-memory-indexes-hash-et-paramtrage-du-nombre-de-buckets

 

Perfs et tuning :

Parameter sniffing : http://www.sqlservercentral.com/articles/Parameter+Sniffing/98481/


Gestion des licences

http://www.sqlservercentral.com/articles/108317/

http://conseilit.wordpress.com/2011/11/04/licences-sql-server-2012/
http://blogs.msdn.com/b/editeurs_de_logiciels/archive/2013/10/30/licensing-comprendre-le-mode-de-fonctionnement-des-licences-sql-server-2012.aspx

 http://conseilit.wordpress.com/2011/11/04/licences-sql-server-2012/

 

Quelques outils utiles

SQL Query Stress :

http://www.mssqltips.com/sqlservertip/2730/sql-query-stress-tool/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012717

 

 

http://sqlquerystress.software.informer.com/download/

 

 

Quelques exemples pratiques de code SQL sous SQLServer :

Les fonction window in :

https://www.simple-talk.com/sql/t-sql-programming/window-functions-in-sql/

https://www.simple-talk.com/content/article.aspx?article=1927

 

Des scripts SQL et powershell :

http://gallery.technet.microsoft.com/scriptcenter/site/search?f[0].Type=RootCategory&f[0].Value=databases&f[0].Text=Databases&f[1].Type=SubCategory&f[1].Value=sqlserver&f[1].Text=SQL%20Server

 

Les sites et blogs utiles :

http://thesqlagentman.com/

http://drsql.org

http://www.simple-talk.com/

http://thomaslarock.com/

http://dba.stackexchange.com/

http://brentozar.com

http://www.scarydba.com/

 

SQL Server et les partitions

Vous trouverez ici quelques scripts sql permettant de visualiser et manipuler les partitions sous SQLServer

Les tables systèmes :

  • sys.tables
  • sys.indexes
  • sys.partitions
  • sys.partition_schemes
  • sys.partition_functions
  • sys.partition_parameters

 

Lister les partitions d'une base :

select object_name(object_id) as tablename,* from sys.partitions



Lister les partitions de toutes les tables

select T.name, T.Object_id, T.Type_Desc,P.Partition_Id
from sys.tables T
inner join sys.partitions P on T.object_id = P.object_id

 

Affiche la fonction et le schéma de partition de toutes les tables :

SELECT
    tbl.name AS [Name],
    tbl.object_id AS [ID],
    ISNULL( ( select sum (spart.rows) from sys.partitions spart where spart.object_id = tbl.object_id and spart.index_id < 2), 0) AS [RowCount],
    CASE WHEN 'FG'=dsidx.type THEN dsidx.name ELSE N'' END AS [FileGroup],
    CAST(CASE WHEN 'PS'=dsidx.type THEN 1 ELSE 0 END AS bit) AS [IsPartitioned],
    ps.name AS [PartitionScheme],
    pf.name    AS [PartitionFunction]
FROM
    sys.tables AS tbl
    INNER JOIN sys.indexes AS idx ON idx.object_id = tbl.object_id and idx.index_id < 2
    LEFT OUTER JOIN sys.data_spaces AS dsidx ON dsidx.data_space_id = idx.data_space_id
    LEFT OUTER JOIN sys.partition_schemes AS ps ON dsidx.name = ps.name    
    LEFT OUTER JOIN sys.partition_functions pf on ps.function_id=pf.function_id



Lister les caractéristiques des partitions d'une table

select object_name(object_id) as table_name, index_id, partition_number, rows
from sys.partitions  where object_name(object_id) = 'matable'

 

Afficher le détails des fonctions et schémas de partitions

-- Affiche les schémas et fonctions de partitions

select s.name as scheme_name, f.name as function_name, limit = case f.boundary_value_on_right when 0 then 'LEFT' else 'RIGHT' END
from sys.partition_schemes s
inner join sys.partition_functions f on s.function_id=f.function_id

 

-- Liste des paramètres et des valeurs de la fonction pfDate

select    *
from    sys.partition_functions pf
        inner join sys.partition_parameters pp on pf.function_id=pp.function_id
        where pf.name = 'pfDate'

select    *
from    sys.partition_functions pf
        inner join sys.partition_range_values prv on pf.function_id=prv.function_id
        where pf.name = 'pfDate'

 

--relation scheme fonction valeurs

select    s.name as scheme_name, f.name as function_name,
        limit = case f.boundary_value_on_right when 0 then 'LEFT' else 'RIGHT' END ,
        v.boundary_id, v.value
from sys.partition_schemes s
inner join sys.partition_functions f on s.function_id=f.function_id
inner join sys.partition_range_values v on v.function_id=f.function_id

 

 

 

Autocommit contre Transaction explicite sous SQLServer

Le but de l'article est de démontrer la différence de performance entre une mise à jour faite en commit implicit ou autocommit et une transaction explicite.

C'est un exemple un peu extrême mais ça montre bien la différence de temps.

 

Commençons par se créer une petite table :

create table matable (i int,c varchar(50))
create clustered index ind on matable(i)
set statistics io,time on
go

 

Code de la requête avec AUTOCOMMIT :

-- AUTOCOMMIT ou COMMIT IMPLICIT
DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR)
declare @i int
select @i=0
WHILE @i < 60000
Begin
INSERT INTO matable values (1,'Name')
select @i=@i+1
End
select * from sys.dm_os_wait_stats s where s.wait_type='WRITELOG'

Temps d'execution : 40 secondes

Résultats :

wait_type      waiting_tasks_count    wait_time_ms    max_wait_time_ms    signal_wait_time_ms
WRITELOG    60045                       34054              260                         671

 

Code de la requête avec TRANSACTION EXPLICITE :

-- EXPLICIT TRANSACTION
DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR)
declare @i int
select @i=0
BEGIN TRAN
WHILE @i < 60000
Begin
INSERT INTO matable values (1,'Name')
select @i=@i+1
End
COMMIT TRAN
select * from sys.dm_os_wait_stats s where s.wait_type='WRITELOG'

Temps d'execution : 10 secondes

Résultats :

wait_type      waiting_tasks_count    wait_time_ms    max_wait_time_ms    signal_wait_time_ms
WRITELOG    1                              5                     5                             0

 

On va donc 4 fois plus vite avec une transaction explicite qu'en AUTOCOMMIT.

Cela s'explique très bien avec les temps d'attentes sur la Wait Task 'WRITELOG'. En effet, lors de la 1ère requête, on passe 34 secondes sur 40 à écrire dans le log.

'WRITELOG' indique que SQL serveur attend que les opérations IO relatives au transaction log soient terminées.

Il est généralement bon indicateur d'un problème de performance disque.

 

J'espère que ca vous a plu.

 

 

Débuter sous SQL Server Cluster

Quelques documentations super interressantes pour commencer :

 

  • Installation of SQL Server 2005/2008 clusters on Windows 2003/2008 : clique ici
  • Installation of SQL Server 2008 clusters on Windows 2008 Step 1 : Validation wizard : clique ici
  • Ressources disques d'une instance SQL en cluster : clique ici

 

 

 

Visualisation de l'espace dispo FileGroup

Create table #AllDbSpace (
    DbName varchar(100),
    FgName varchar(100),
    NbFiles int,
    CurrentSizeMB int,
    FreeSpaceMB int,
    FreeSpacePct int
)

DECLARE @DatabaseName VARCHAR(100)
DECLARE @SQLScript VARCHAR(6000)

DECLARE DatabaseCursor CURSOR FOR
                SELECT [name] FROM master..sysdatabases
                 where dbid > 4
                ORDER BY [name]

OPEN DatabaseCursor
FETCH NEXT FROM DatabaseCursor INTO @DatabaseName

WHILE @@FETCH_STATUS = 0
        BEGIN

                  SET @SQLScript = 'USE ' + @DatabaseName + ';
                                                  With dbSpace'+ @DatabaseName +' as
                                                    (
                                                        SELECT DB_NAME() AS DbName,
                                                        fg.name AS FgName,
                                                        count(f.name) AS NbFiles,
                                                        sum(f.size/128) AS CurrentSizeMB,
                                                        sum(f.size/128-CAST(FILEPROPERTY(f.name,''SpaceUsed'') AS INT)/128) AS FreeSpaceMB
                                                        FROM sys.database_files f
                                                        inner join sys.filegroups fg on fg.data_space_id = f.data_space_id
                                                        group by fg.name
                                                    )
                                                    INSERT INTO #AllDbSpace
                                                    Select DbName,FgName,NbFiles,CurrentSizeMB,FreeSpaceMB,FreeSpaceMB*100/CurrentSizeMB as ''%FreeSpace''
                                                    FROM dbSpace'+ @DatabaseName +';
                                                    '

                EXEC (@SQLScript)
                FETCH NEXT FROM DatabaseCursor INTO @DatabaseName

        END

CLOSE DatabaseCursor
DEALLOCATE DatabaseCursor

SELECT DbName,FgName,NbFiles,CurrentSizeMB,FreeSpaceMB,FreeSpacePct as '%FreeSpace' FROM #AllDbSpace
DROP TABLE #AllDbSpace

 

Procédure Collecte / Analyse Perfs SQL Server

Y

 
Procédure Analyse Perfs SQL server

 

 

 

 

 

Les outils LIVE :

Dashboard pour SQL Server 2005 :

Mise en œuvre du dashboard :

·         Lancer le programme SQLServer2005_PerformanceDashboard.msi

·         Une fois que c’est fait, lancer le setup.sql sur le SQLServer dans la base msdb. Le fichier est dans C:\Program Files (x86)\Microsoft SQL Server\90\Tools\PerformanceDashboard

·         En suite il faut lancer un report à partir de SQL Server Management Studio (click droit sur l’instance/Reports/Custom Reports) et ouvrir le fichier

C:\Program Files (x86)\Microsoft SQL Server\90\Tools\PerformanceDashboard\performance_dashboard_main.rdl

 

 Dashboard pour SQL Server 2008

 

Perfmon

Cet outil va permettre la lecture du fichier BLG produit avec SQLDIAG. Il est déjà installé sur le serveur. Il se lance de la façon suivante :

Start => Execute => perfmon.msc  

Pour prendre en compte le fichier BLG :

·         Cliquer sur l’icône ‘System Monitor Properties’ (icône en forme de cylindre)

·         Cocher ‘Log Files’

·         Ajouter le fichier BLG

 Pour ajouter des compteurs sur le graphe, cliquer sur l’icone ‘+’

Vérification classique de ces compteurs en cas de problèmes de perfs :

  • Memory / Available MBytes doit être supérieur à 100
  • SQLServer : Memory Manager / Target Server Memory
  • SQLServer : Memory Manager / Total Server Memory : doit être inférieur au Target Server Memory
  • Buffer Manager : Page Life Expectancy doit être supérieur à 300 secondes
  • Logical Disk : Avg. Disk sec/Read
  • Logical Disk : Avg. Disk sec/Write
    • Idéal quand < 5ms pour du transaction log et < 10 ms pour du data
    • 10-20 ms est en général acceptable
    • > 20 ms ne l'est plus
  • Processor / %Privileges Time contre %User Time
  • Processor : Sqlserver %Processor Time

 

On peut automatiser la prise de mesure des compteurs perfmon en créantdes templates xml.

L'article suivant explique très bien cela : cliquer ici et se positionner sur le paragraphe 'mise en place des compteurs avec les fichiers .xml'

 

 

SQL Server 2008 and 2008 R2 instances, Data Collector (+ SQL Utility in SQL Server 2008 R2):

 

 

Dans SQL Server 2008, SQL Server Activity Monitor est inclus directement dans SSMS

 

Les outils Post-Mortem

SCOM 2007 + SQL Server Management Pack:

 

SQLDiag (Data Collect) :

C’est l’outil qui permet la collecte des informations et system et SGBD. Il est déjà installé avec l’instance SQL SERVER et se trouve dans le répertoire d’installation des sharedtools, par default

C:\Program Files\Microsoft SQL Server\90\Tools\Binn

Au premier lancement, il génère des fichiers XML de configurations. Il faut ensuite l’arrêter pour le relancer en utilisant le fichier de config SD_Detailed.XML de la façon suivante :

SQLDIAG /I SD_Detailed.XML

Dans ce cas tous les résultats seront déposés dans le répertoire :

C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLDIAG

 

Vous pouvez aussi lui spécifier un répertoire avec l’option /O

SQLDIAG /I SD_Detailed.XML /O C:\Program Files\Microsoft SQL Server\90\Tools\Binn\output

 

La prise de mesure peut être aussi planifiée.

SQLDIAG /I SD_Detailed.XML /B 20100201_05:30:00 /E 20100201_12:00:00 /O C:\Program Files\Microsoft SQL Server\100\Tools\Binn\output

 

L’utilisation du SQLDIAG coûte 1% CPU

Les fichiers générés qui nous sont utiles par la suite :

SQLDIAG.BLG
MSGEPX03_MX_TP_DBA_sp_trace.trc

Pour info, il existe 2 packages avec des sqldiag prédéfinis à télécharger ici (tout en bas à gauche de la page). Ces 2 packages sont intégrables / interprétables dans SQL Nexus (voir ci-dessous)

 

 

SQL Nexus (Analyse de trace)

 

L'installation se fait très simplement par un détare de la distrib. Cet outil permet d’intégrer le(s) fichier(s) .trc, le(s) fichier(s) .BLG (perfmon), et les fichiers générés par les requêtes DMV des packages cités à la fin du paragraphe sqldiag. (ex : sur msgepx03 dans D:\Perfs\Tools SQLServer\SQLNexus3.0.0.0)

Il faut au préalable installer ReportViewer :

Pour plus d'explications, aller sur le lien suivant : http://sqlnexus.codeplex.com/wikipage?title=GETTING_STARTED&referringTitle=Home

D'ailleurs pour la collecte des données, codeplex met à disposition 2 scripts (Version 2005 et 2008) sous PerfStatsScript

 

La collecte des données

Sur le serveur cible, déposer le PerfStatsScript.zip correspondant à votre version. 

StartSQLDiagTrace.cmd : Récupération des compteurs génériques permettant une première analyse de Perfs

StartSQLDiagDetail_Trace.cmd : Récupération de compteurs plus détaillés pour une analyse plus fine. Cela peut générer quelques lenteurs (Attention en Prod)

StartSQLDiagNoTrace.cmd : Ne lance pas de traces via le Profiler

StartSQLDiagForReplay.cmd  : Utile pour simuler une Prod. Je n'ai pas encore étudier ce cas

 Le lancement d'un de ces 4 fichiers génère les fichiers de traces dans un répertoire SQLDiagOutput

Ce répertoire contient des fichiers '.out' contenant les données de SQLServer (Tables, Procédures...), des fichiers .trc (Trace SQL Server Profiler) et un fichier SQLDIAG.BLG (Trace SQLDIAG).

 

 

Chargement des données dans SQLNexus

SQLNexus a besoin d'une base pour stocker les données de la collecte.

Lancer sqlnexus.exe, renseigner le SQLServer sur lequel vous avez créé votre base et choisissez celle-ci dans le menu déroulant en haut à droit

 

 

Cliquer sur Import dans le menu de gauche ou dans File > Import. Donner le répertoire ou se trouve tous les fichiers de la collecte.

En cliquant sur Options, on peut choisir le type d'import que l'on fait, si l'on recrée une base etc... (L'import du fichier SQLDIAG.blg est par défaut désactivé, il suffit de l'activer pour l'intégrer)

Cliquer sur '> Import', voici un exemple d'import :

 

Visualisation des données (ex pris sur un serveur SQLServer 2008)

Il est mis à disposition différents rapports sur menu de gauche.

En cliquant sur un menu, cela ouvre une nouvelle page avec les données lui correspondant.

Le message 'The database doesn't have necessary data to run this report' quand on clique sur un report signifie que les données nécessaire à ce rapport ne sont pas en base. Dans notre cas, le report 'SQL Server 2000 PerfStats' nous renvoie le message.

 

 

Outil PAL (analyse fichier perfmon .BLG)

Cet utilitaire permet d'extraire et de synthétiser les informations contenu dans le fichier blg

On peut le télécharger depuis http://pal.codeplex.com

Lorsque l'erreur suivante apparait :

You cannot call a method on a null-valued expression.
At C:\Program Files\PAL\PAL v2.0.3\PAL.ps1:2102 char:55
+         If ($iUBound -gt $aSortedNumbers.GetUpperBound <<<< (0))
    + CategoryInfo          : InvalidOperation: (GetUpperBound:String) [], Par
   entContainsErrorRecordException
    + FullyQualifiedErrorId : InvokeMethodOnNull

L'application de ce correctif http://pal.codeplex.com/Thread/View.aspx?ThreadId=228805 peut résoudre le problème.

Lancement de l’analyse

 

 

 

 

 

 

 

Prise en compte du fichier BLG :

 

 

 

 

 

 

 

 

Choix du type de trace :

 

 

 

 

Renseignements divers (CPU, Mémoire, …) du serveur monitoré

 

 

 

 

 

 

Choix de l’intervalle, à faire en fonction bien sûr du temps de la trace :

 

 

 

 

Renseignement de la trace de sortie (fichier html) :

 

 

 

 

 

Quelques exemples de graphes et de tableaux du fichier html de sortie :