[SharePoint] Cas d’étude – MOSS 2007 en mode Haute Disponibilité avec SQL Server 2005 Database Mirroring sous environnement virtuel avec Hyper-V

7 08 2009

Beaucoup d’environnement de production requière la disponibilité permanente des informations, des documents et autres applications métiers de l’entreprise, il en va de même pour les infrastructures utilisant SharePoint 2007.

La pérennité des fermes SharePoint et des données utilisateurs tient dans l’intégrité des bases de données de la ferme! Et l’accès à l’information pour les utilisateurs tient à la disponibilité des composants de la ferme SharePoint, a savoir:

  • Les serveurs Webs Frontaux
  • Les serveurs d’applications SharePoint
  • Les serveurs de base de données SQL

Dans SharePoint 99% des actions à travers le portail sont des transactions… (Transactions au sens SQL serveur du terme)

La plupart des actions que font les utilisateurs, durant les phases de travail (ouverture de document, Extraction, Archivage, modification, etc…), génèrent des transactions qui remettent à jour les données dans la base de contenu de l’application web correspondante.

D’ou l’importance d’avoir une architecture SQL Serveur qui soit à la fois, certes, performante, mais également hautement disponible afin que les utilisateurs puissent toujours accéder à leurs données.

Microsoft vient de sortir un nouveau ‘Case Study’ ‘(Cas d’étude) permettant la mise en place d’une infrastructure SharePoint 2007 avec un environnement SQL Serveur monté en mode Database Mirroring sous Hyper-V.

Database Mirroring:

Dans un environnement SQL de database Mirroring, les transactions sont envoyés directement d’un serveur, dit principal, vers un autre serveur SQL, dit Miroir, afin qu’il traite les mêmes transactions que le serveur principal.

Il existe 3 types d’implémentations du Database Mirroring:

  • Mode Asynchrone ou Mode Haute Performance (Basculement forcé)
  • Mode Synchrone ou Mode Haute Protection (Basculement Manuel)
  • Mode Synchrone avec témoin ou Mode Haute Disponibilité (Basculement manuel ou automatique)

Voici un rapide schéma tiré du site Technet:

 

grid.ai

 

 

 

   Database Mirroring Overview

 

 

 

 

Voici une vue d’ensemble tiré de ce cas d’études, sur l’implémentation des Serveurs SQL dans Hyper-V:

ImplementationHD

Retrouvez le guide complet de ce cas d’étude directement sur le site Microsoft.

Case Study

Case Study (Docx)

Case Study (Pdf)

Bookmark and Share





[SQL Server] Outil de monitoring open source de vos serveurs

30 07 2009

Voici un projet apparut sur CODEPLEX: SqlMonitoring Tool

Celui-ci vous permet de surveiller vos environnements serveurs SQL 2000, 2005 et 2008, d’envoyer des alertes vers une base de donnée centrale (SQL 2008). Vous pourrez visualiser les alertes et effectuer diverses opération.

Cet outil représente une bonne alternative pour les infrastructures en manque de budget et ne possédant d’outils de supervision, tel que SCOM (System Center Operations Manager).

Rendez-vous sur le site du projet Codeplex: SqlMonitoring Tool





[SQL] Microsoft SQL Serveur 2008 SP1 disponible

9 04 2009

Microsoft vient de sortir son Service Pack 1 pour SQL serveur 2008. Un seul package disponible quelque soit l’édition que vous utiliser.

  • Intégration – Vous êtes à présent en mesure d’intégrer l’installation de base aux Service Packs (ou correctifs logiciels) et de procéder à l’installation en une seule étape.
  • Désinstallation du Service Pack – Vous êtes à présent en mesure de désinstaller uniquement le Service Pack (sans supprimer l’intégralité de l’instance)
  • Fonctionnalité ClickOnce du Générateur de rapports version 2.0 (Report Builder)

Service Pack 1 SQL serveur 2008 – Microsoft





[SharePoint] Eclater les bases de contenu sur un autre serveur SQL

24 03 2009

La question est:

Comment définir les bases de données de contenu sur un serveur SQL différent de celui utilisé par la base de configuration.

C’est ce qui arrive régulièrement lorsque vous avez monté votre solution SharePoint en mode ferme sur un serveur unique et avec SQL express 2005. Le but est donc de changer le serveur SQL hébergeant les bases de données de contenu de vos applications web et de laisser sur l’instance SQL Express 2005 la base de configuration (SharePoint_Config).

  1. Préparez vos bases pour le déplacement vers un autre serveur:
    1. stsadm –o preparetomove –contentdb NomDeVotreBaseDeDonnes
  2. Sauvegarder vos bases de données (WSS_Content_XXXXXXXXXXXX, Y compris la base de configuration… Au cas ou…) dans SQL Serveur.
  3. Laisser votre base de config sur l’instance SQL Express, ce n’est pas gênant en soi, la taille n’est pas forcément aussi exponentielle que les bases de contenu.
  4. Détacher votre base de contenu:
    1. stsadm –o deletecontentdb –url VotreUrl –databasename NomDeVotreBaseDeDonnes –databaseserver NomDeVotreServeurSQLSource
  5. Restaurez toutes vos bases de données de contenu sur votre nouveau serveur SQL 2005, ou au mieux copier les fichiers MDF et LDF de la base ou de vos bases. Il faut que le compte du pool d’application de votre ferme SharePoint détiennent certaines autorisations sur le nouveau serveur SQL.
  6. Associer vos bases à votre solution SharePoint avec le nouveau serveur SQL:
    1. Stsadm –o addcontentdb –url VotrePortail –databasename le_nom_de_votre_db_de_contenu –databaseserver votre_nouveau_serveur_source

N’oubliez pas de tester la procédure sur votre environement de test avant la mise en exécution… C’est toujours une opération délicate. C’est pourquoi je vous invite dans un premier temps à ne pas déplacer la base de configuration, sauf si cela est également nécessaire, du au fait de la taille. Attention la procédure pour cette base de configuration est différente !!!!





[SQL] SQL Serveur 2008 et PowerShell

22 02 2009

L’une des nouveauté de SQL serveur 2008 et l’intégration de PowerShell (SQLPS) pour la gestion des objets SMO (SQL serveur Management Objects). Actuellement, le moteur de base de données et Service broker peuvent être manager par ce biais.

SQL Serveur 2008 implémente déjà quelques composants:

  • La navigation dans les objets (Comme sur le système de fichier)
  • Un ensemble de commande permettant des action sur ces objets SQL
  • La possibilité de créer des fichiers scripts pour exécuter des actions sur SQL serveur
  • La possibilité d’avoir une fenêtre d’accès au PowerShell SQL Serveur

Voyons comment naviguer dans SQL serveur avec PowerShell. fingerscrossed

Vous retrouvez la possibilité de lancer une fenetre powershell sur les objets dans la console SSMS (SQL Serveur Management Studio) dans le menu contextuel.

SSMS 2008

Voyons maintenant la navigation dans SQL PowerShell. Dans l’image ci-dessous nous avons la même vision et la même navigation que dans la console SSMS.

Navigation SQLPS

listons les bases de données existantes sur la machine:

ls
cd Default
cd Databases

Voici le résultat, la liste des bases de données sur le serveur:

Databases

Rentrons dans une base de données (SharePoint_Config pour moi). Voici le résultat, la liste des objets dans cette base:

cd Nom_de_la_base
ls

Sharepoint_Config_database 

Lister les tables:

cd Tables
ls

list Tables

cd dbo.objects
ls

dbotables





MDOP – Optimisation du poste de travail dans l’entreprise – Part1

15 01 2009

Dans le cadre de la software assurance, Microsoft offre aux entreprise ayant souscrit à ce contrat de maintenance, un pack d’outils complet qui permet à ces clients de mieux appréhender et d’optimiser la gestion, le déploiement, les diagnostiques, la récupération, l’inventaire et la virtualisation d’application.

Ces outils sont regroupé dans un pack complet:

MDOP : Microsoft Desktop Optimization Pack

Ce pack comprends plusieurs outils venu de divers horizon, mais principalement des diverses acquisition des structures que Microsoft à racheté dans les mois ou les années précédentes. Parmi celles-ci:

  • Softricity
  • Winternals
  • Asset Metrix

et d’autres…. Ce pack comprends donc, les fonctionnalités suivantes:

Fonctionnalité Aperçu Solution du pack

Virtualisation d’application

Streaming d’application sur les postes clients avec gestion centralisé

App-V (Microsoft Application Virtualization)

(Ex: Softgrid))

Service d’inventaire

Inventaire logiciels intégré dans des rapports digne de la BI (Business Intelligence)

Microsoft AIS (Asset Inventory Service)

Diagnostiques et outils de récupérations

Boite à outil complète permettant de lancer une récupération d’un poste de travail rapidement

Microsoft DaRT (Diagnostique and Recovery Toolset)

(Ex: ERD Commander)

Gestion avancée des stratégies de groupe

Apporte des fonctionnalités à ma console GPMC

AGPM (Advenced Group Policy Management)

Gestion centralisé des Erreurs des postes de travail

Gestion Proactive des applications et des erreurs liés au système d’exploitation Windows

SCDEM (System Center Desktop Error Monitoring)

 
A venir….

Microsoft Enterprise Desktop Virtualization

(MED-V, Ex Kidaro)

Pour l’heure, je vous propose de découvrir DEM (Desktop Error Monitoring), les autres suivront dans d’autres posts à venir…

DEM (Desktop Error Monitoring)

Qu’est-ce que DEM?

  • Fournit une quantité d’agent pour surveiller les erreurs Windows
  • Repose sur les fonctionnalités des rapports d’erreurs Windows qui sont intégrés aux systèmes
  • Lié à une base de donnée SQL Serveur pour stocker les informations d’erreurs recueillit sur les machines clients
  • Outils proactif qui permet la découverte d’erreur, et propose des solutions rapide avant que cela ne soit irrémédiable
  • Fonctionnalité de rapports complet en utilisant SSRS (SQL serveur Reporting Services)

But de DEM?

  • Réduire les couts (TCO)
  • Augmenter la productivité des utilisateurs finaux et la réactivité des services informatiques
  • Augmenter la stabilité des postes de travail

Le fonctionnement de DEM

MDOP_DEM

Le flux des données recueillit par DEM

DEM_Flow

Pré-requis pour l’installation de DEM

DEM nécessite certaines conditions et certains pré-requis pour l’installation:

  • 2 Go de Mémoire recommandé
  • Windows Serveur 2003 SP1 mini
  • Microsoft SQL Serveur 2005 SP1
  • Service de publication Web en mode de démarrage ‘Automatique’
  • Framework .Net 2.0
  • Framework .Net 3.0
  • ASP .Net 2.0
  • MDAC 2.80.1022 ou plus

install_dem

Les informations nécessaire pour l’installation de DEM

  • SQL SERVEUR
    • Le nom de l’instance SQL serveur à utiliser
    • Le nom de la base de données
    • La taille de la base données
    • L’emplacement du fichier MDF de la base SQL
    • L’emplacement du fichier LDF de la base SQL
  • Compte du serveur de Management
    • Compte SYSTEM LOCAL ou Compte de domaine ou compte d’utilisateur local au serveur
    • Mot de passe
  • SDK et Compte de service de configuration
    • Compte SYSTEM LOCAL ou Compte de domaine ou compte local
  • Configuration de l’authentification de la console WEB
    • Authentification Windows
    • Authentification par formulaire

Installation de DEM

 
Lancez la vidéo  Visualiser la vidéo d’installation – Phase 1 (Environ 2 Mo)

Installation de Operations Manager 2007 Reporting

DEM s’appuye sur Reporting Service pour la génération des rapports d’informations collectés par le serveur DEM. L’installation d’Operations Manager 2007 Reporting se lance à la fin de la procédure d’installation de DEM.

Lancez la vidéo  Visualiser la vidéo d’installation – Phase 2 (Environ 2 Mo)

Configuration de DEM

4 étapes pour configurer DEM:

  • Déployer la collecte des données sur les clients via les stratégies de groupe (GPO)
  • Transmission des erreurs
  • Collecte des données
  • Notification

Lancez la vidéo  Visualiser la vidéo de configuration – Phase 3 (Environ 6 Mo)

Voila la console DEM (SCOM – System Center Operations Manager 2007)

DEM_Config

Le registre des clients DEM

Les paramètres de stratégie déployé sur les clients implémentent des valeurs dans les clés de registre Windows suivantes:

  • HKLM\Software\Policies\Microsoft\PCHealth\ErrorReporting\DW

DEM_Client_Regedit

  • HKLM\Software\Policies\Microsoft\SQMClient

DEM_Client_Regedit2

A suivre……





Transfert de base de données SQL 2000 vers SQL 2005

13 01 2009

Pour vos transfert de base, vous pouvez utiliser les méthodes BACKUP/RESTORE des bases, DETACHER/ATTACHER ou COPIER les bases directement.
 
Ensuite, il vous faut faire une petite manipulation, lors de la migration ou de la restauration des bases provenant de SQL 2000, car SQL 2005 va garder la compatibilité de la base en mode SQL 2000, donc il faut manuellement basculer le mode compatibilité de cette base, comme suit:
 
1: Compatibilité de la base:
 
Dans la fenêtre de dialogue "Database Properties" de la nouvelle base, dans l’outil SQL Server Management Studio, cliquez sur l’onglet "Options" et changez le mode de compatibilité "SQL Server 2000(80)"  par "SQL Server 2005(90)"  ou directement en TRANSACT:
 
changement de base de données
USE nomDeVotreBaseDeDonnées
GO

Changement de compatibilité (90 correspond  au niveau de compatibilité SQL 2005, 80 c’est pour 2000)
EXECUTE sp_dbcmptlevel nomDeVotreBaseDeDonnées , 90   
GO
 
Ensuite, il vous faut mettre à jour les statistiques de cette base

2: MAJ des statistiques:
 
USE nomDeVotreBaseDeDonnées
GO

Mise à jours de statistique SQL
EXEC sp_updatestats
GO
 
Cette procédure vous permet de remettre à zéro les STATISTIQUES et de faire une MISE À JOUR automatiques pour tous les index et statistiques sur chaque table dans la base de données  en cours. Vous éviterez ainsi des erreurs liées aux statistiques de la précédente version.





Sauvegarde de base de données et optimisation

31 12 2008

Difficile de parler de sauvegarde et encore plus de restauration de base de données (BDD) dans SQL serveur sans parler du mode de récupération utilisé par les bases dans ce SGBD (Système de Gestion de Base de Données).

Ce article me permet de faire suite au post de notre ami Laurent V., sur le blog Dotnet France, qui nous à déjà décortiqué la première partie et que je vous conseille de lire ICI.

SQL serveur et ses trois modes de récupérations:

  1. Mode Simple
  2. Mode Bulk-LOGGED (Journalisé en bloc)
  3. Mode Complet

Avant de rentrer dans les détails des sauvegardes/restaurations, modes de récupérations et autres optimisations possibles, faisons un petit rappel sur ce que représente physiquement sur le système de fichiers une base de données SQL.

  • Petit rappel des éléments d’une base de données:

SQL1

Une base de donnée est constituée d’au moins deux fichiers ‘dans sa conception la plus basique’.

- Un fichier à extension MDF (Master Data File) qui contient à proprement parlé les données (Tables, Vues, Données, Procédures Stockées et autres fonctions… )

- Un fichier à extension LDF (Log Data File) qui lui ne contient que les transactions que reçoit le serveur SQL pour cette base de donnée avant de les écrire physiquement dans le fichier MDF.

Toutes les commandes que reçoit le serveur SQL sont des transactions (il en existe deux types: Implicite et Explicite)

  • Examen d’une transaction: Examen d'une transaction

 SQL2

  • Inspection d’un fichier de donnée:Examen d'une transaction

Comment un fichier MDF est t’il structuré????

SQL Serveur stocke ses données par plage de 64 ko (C’est ce que l’on appel une ‘Extension’), c’est l’unité de base dans laquelle l’espace est géré. Dans une ‘Extension’ on y retrouve 8 pages de 8ko contigües (8 x 8ko = 64 ko)

Autrement dit, SQL serveur contient :

  • Chaque page (de données) commence par un en-tête de 96 octets (Stocke les informations systèmes relatives à la page)
  • 128 pages par mégaoctet
  • 16 extensions par mégaoctet
  • Une ligne de donnée ne peut pas dépasser 8060 octets
  • Les lignes de donnée sont placées de manière séquentielle dans le fichier (Comme ci-dessous)

ms190969_ec13a108-3a75-43dd-b789-70e92eb31e99(fr-fr,SQL_90)

(Détail d’une page de données)

Le site MSDN pour plus de détails sur les pages et les extensions (http://msdn.microsoft.com/fr-fr/library/ms190969(SQL.90).aspx)

  • Inspection d’un fichier de logsExamen d'une transaction

C’est bien compliqué un fichier de donnée MDF, heureusement les fichiers de journalisation (LDF) sont un peu plus simple, ou presque…

En fait, les fichiers LDF ne possèdent pas de pages mais uniquement une série d’enregistrements de fichiers journaux.

*********************************************

Voilà, le décore est planté, vous en savez un peu plus sur les fichiers de base de données SQL Serveur, nous pouvons passer à la suite des opérations, les modes de récupérations de SQL Serveur qui déterminent les moyens à votre disposition pour la récupération de vos données.

*********************************************

  • Le mode SIMPLE

Pour faire simple… En mode de récupération SIMPLE, SQL Server ne journalise que les transactions durant une certaine période. En fait le log n’est plein que pendant les phases entre les différents ‘Check Point’ (Point de Contrôle – moment ou SQL Serveur écrit dans le fichier de donnée (MDF).

En fait le mode simple, ressemble (ou correspond) à l’instruction T-SQL:

TRUNCATE LOG ON CHECKPOINT

qui tronque le fichier log après la publication de chaque point de contrôle. Pour ainsi dire, que le fichier LOG (LDF) est quasi vide en permanence en théorie. Donc, il est impossible d’utiliser celui-ci pour des opérations de restaurations. d’ailleurs, il est impossible de sauvegarder le journal dans SQL Server en mode simple.

  • Le mode Bulk-LOGGED (Journalisé en bloc)

Dans ce mode, SQL Server commence à journaliser les instructions et les fichiers de logs peuvent commencer à être utilisé pour la restauration des données. Seulement, petit hic!!! SQL Server journalise de manière minimal certaines opérations, notamment les opérations d’insertion en bloc (ou en masse) comme SELECT INTO ou BULK INSERT.

Donc dans ce mode récupération, vous pouvez restaurer les bases de données jusqu’à la fin de la sauvegarde du journal… En fait seul les occurrences des transactions, les extensions des données modifiées sont journalisé pour les opérations de masse. Donc impossible de restaurer les données à un point dans le temps ou à une transaction MARK.

  • Le mode complet

Comme son nom l’indique…. Il est complet. C’est le mode qui vous permet de sauvegarder à la fois les données et les journaux de logs pour pouvoir restaurer celles-ci en fonction de vos besoins. Voir même jusqu’à un point dans le temps. C’est la méthode de restauration la plus fine pour les données.

Seul petit point noir au tableau, c’est que le SQL Server ne tronque jamais le journal… Ce qui implique une croissance de taille très rapide du fichier de log. Ce qui implicitement nécessite le plus de gestion administrative.

Pour définir le mode récupération  de vos bases, vous pouvez utiliser ‘Enterprise Manager’ pour SQL 2000, ou SSMS (SQL Server Management Studio) dans SQL Server 2005. Autre méthode, qui fonctionne dans les deux cas…

ALTER DATABASE Nom_Base SET RECOVERY {FULL|SIMPLE|BULK_LOGGED}

En résumé:

 

Avantages

Inconvénients

Mode Simple

Taille du fichier LOG

Sauvegarde Complete ou différentiel pour restaurer les données. Peut provoquer une perte des données importantes en cas de sinistre important, puisque les données ne peuvent-être restauré qu’à la dernière sauvegarde complète ou différentiel.


Mode Bulk-LOGGED
Performances lors des opérations d’insertion en masse. Minimise la taille du journal pour ces opérations.

Pas de possibilité d’utiliser le journal pour les restaurations à un point dans le temps ou à une MARK.

Mode Complet

Restauration plus fine en cas de sinistre. Reprise des données plus précise, voir quasiment au point de défaillance en cas de crash.

Réduit les temps de restauration.

Taille du fichier LOG plus importante. Charge administrative plus importante.

Temps de sauvegarde plus long

*********************************************

Voilà, rapidement  pour les modes de récupération de SQL Serveur. Pour plus de détails sur les instructions de sauvegarde/Restauration, je vous conseille de lire l’article pré-cité plus haut ICI ou encore les liens ci-dessous.

http://msdn.microsoft.com/fr-fr/library/ms191253.aspx

http://msdn.microsoft.com/fr-fr/library/ms175199(SQL.90).aspx

*********************************************

  • Coté performances et optimisation

Que dire, mis à part que SQL Serveur est très couteux en terme de performance et d’optimisation. Et je ne rentrerais pas dans les détails des optimisations possibles d’une base de données, mais uniquement en parlant de performances et optimisation physiques.

Vous l’avez compris SQL effectue la majeure partie de son job sur les données lorsque celle-ci son en mémoire… Donc, plus SQL serveur Serveur a de mémoire pour lui et plus il est heureux…

En fait, vous pourriez allouez 90 à 95 % de votre mémoire physique, en exagérant à peine, à SQL Serveur, car c’est lui qui fait la plus grosse partie du boulot. Quant je dis qu’il fait tout, il fait tout… Seul la partie ‘Réseaux’ est conservé au niveau du système d’exploitation Windows. SQL Serveur est quasiment un système d’exploitation à lui seul.

Ensuite, côté stockage physique, c’est souvent là ou le bât blesse.

Arrêtons de concevoir des bases de données qui font 300 Mo avec des taux de croissances de 20 à 25 %… C’est ridicule…

Aujourd’hui ce n’est plus le prix du Téra-Octet qui est devenu le plus couteux en terme financier.

Donc, concevez des bases de données avec une taille qui vous permettent d’envisager l’avenir et de tenir 2 à 3 ans avant de devoir faire croître votre fichier de données.

Un fichier de données c’est physique, les données y sont stockées de manière séquentielle sur le disque. Hors, que ce passe t’il lorsque SQL Serveur nécessite une croissance de son fichier de données, il va tout simplement augmenter la taille de celui-ci… Mais s’il y d’autres données déjà inscrite sur le disque est contigüe à ce fichier de données… Le système va placer la suite du fichier de données au premier emplacement libre sur le disque.

C’est le phénomène classique de la fragmentation Windows.

Pour éviter cela est pouvoir justement garder toutes les données du fichier de données SQL le plus contigüe possible, créez des fichiers de données de grande taille des la création de votre base, afin d’éviter au maximum cet effet de fragmentation du disque.

Quant au taux de croissance utilisé par SQL Serveur, il en est de même.

D’après-vous quand SQL Serveur nécessite t’il la croissance de son fichier de donnée???

Tapez:

  1. Pour garder Grégoire dans la ferme
  2. Pour que Loana revienne
  3. Pour continuer

Bon, on a le droit de déconner un peu… Non?

Et bien en fait, SQL serveur fait croitre son fichier de donnée lorsqu’il n’a plus de place dans celui-ci pour y écrire les nouvelles données qu’il devra y inscrire.

Donc en résumé, ce n’est jamais lorsque SQL Serveur ne fait rien, qu’il attend, que celui-fait croitre la taille de son fichier, c’est toujours sur une satanée transaction de la mort (@!!!@@@ #) qu’il va avoir besoin de place…. Et pendant qu’il augmente la taille du fichier, et bien il ne fait pas grand chose d’autre, ou alors très difficilement.

Donnez à vos fichiers de données une croissance fixe en taille et allouez lui une taille cohérente, du genre entre 300 et 500 Mo d’un coup. Ainsi, il ne devra pas réitérer cette opération tous les deux jours

Et en plus vous diminuerez, un peu, la fragmentation du fichier physique, puisque le système va chercher en priorité un espace libre sur le disque pour y insérer la suite de votre fichier de donnée. Ainsi cette portion du fichier devrait quasi-être la plus contigüe possible sur votre disque.

Ensuite, pour continuer avec les performances, il y a les I/O (Les Entrées/Sorties). Quoi de mieux qu’un disque rapide pour y stocker les données certes, mais surtout les fichiers de logs. Plus SQL Serveur aura un accès rapide en écriture au fichier de journalisation, plus les temps d’attentes des transactions qui arrivent derrière seront diminué d’autant.

(Exemple d’implémentation rapide)

Optimisation 

Pour plus de détails sur les systèmes RAID: Wikipédia

A lire absolument:

 L’article de Frederick Brouard de SQL Pro sur l’optimisation des bases de données

Bon, je crois que cela suffit pour aujourd’hui… C’est déjà assez long et en plus je suis en vacances…

vacances