Migrer SharePoint sous SQL Server 2005 - Part 3 : Migrer une installation SharePoint sous SQL 2005

Paru le 03 juillet 2006

left

Nous avons donc pu effectuer l'update du serveur SQL pour passer de la version 2000 vers 2005. Mais dans certains cas, il peut être intéressant de faire un changement de serveur. Nous verrons donc comment faire cette migration sur une nouvelle instance SQL Server 2005.

Introduction

Nous avons vu dans l'article précédent la migration par l'upgrade du moteur SQL Server de la version 2000 vers la version 2005.

Il est donc question cette fois de faire cette migration sur une nouvelle instance SQL Server 2005. Ce choix peut être choisi pour différentes raisons telles que :

  • Mise en place d'un serveur plus puissant

  • Conservation de la précédente architecture par sécurité

  • Migration par étape de l'infrastructure SharePoint (Site WSS par Site WSS)

Présentation

Nous verrons dans ce nouvel article un exemple par l'installation d'une nouvelle instance SQL Server 2005 en parallèle de l'instance SQL Server 2000. Notre cas est toujours une mono-machine avec :

  • SQL Server 2000

  • Un site WSS de test

  • Un site SPS de test

Nous devrons donc installer une nouvelle instance SQL Server 2005 qui sera une instance nommée (SQL2005). Puis nous verrons comment faire le passage des bases de données du moteur SQL Server 2000 vers le moteur SQL Server 2005 et les modifications à apporter dans les sites SharePoint (WSS et SPS).

Installation de l'instance SQL Server 2005

Dans le précédent article, nous avons vu l'installation du moteur SQL Server 2005 par l'Upgrade de la version 2000 :

Nous devons donc cette fois installer une instance nommée SQL Server 2005, ce qui donnera un accès via le nom :

  • NomDuServer\SQL2005

Le processus d'installation est le même que pour l'Upgrade jusqu'au moment de la spécification de l'instance.

On spécifie aussi le compte utilisé pour chaque service et ceux qui seront actifs au démarrage de la machine.

On définit le mode d'authentification des comptes (mixte pour notre cas).

On définit la "Collation" utilisée.

Et on active la remontée des erreurs éventuelles.

On voit le résumé des options choisies.

Et l'installation s'effectue sur le serveur.

Une fois l'installation terminée, on retrouve les mêmes écrans de résumé que dans le cas de l'Update.

Il est conseillé d'en profiter pour installer le Service Pack 1 de SQL Server 2005 sur le serveur dans la foulée. Vous le trouverez ici :

Maintenant que notre moteur relationnel SQL Server 2005 est installé sur le poste, nous allons installer SQL Server 2005 Management Studio Express afin de gérer celui-ci.

Je vous invite pour cela à consulter l'article :

Voyons maintenant le paramétrage du moteur SQL Server 2005 avant de commencer la migration.

Configuration de SQL Server

Une fois que notre moteur SQL Server 2005 est mis en place et fonctionnel, nous devons modifier des paramètres de celui-ci avant de migrer les bases.

Modification de la sécurité

Dans notre installation de SharePoint, nous avons créé un compte local comme compte administrateur de SPS et WSS :

  • MonServer\SPSAdmin

Il faut de ce fait donner les droits suffisant à ce compte pour que SPS et WSS fonctionne correctement et ait accès aux bases de données.

De plus, ce compte est celui utilisé pour la création des bases de contenu des sites SharePoint (SPS ou WSS). Cela se voit lors de l'affichage des propriétés d'une des bases SharePoint.

Nous allons donc avec SQL Server Management Studio Express (SSMSE) nous connecter sur le serveur SQL Server 2005 que nous venons d'installer.

Une fois connecté, nous devons déplier dans l'explorateur d'objets afin d'aller dans :

  • Security > Logins

Une fois dans cette partie, nous devons cliquer avec le bouton droit de la souris et choisir "New Login".

Avec le bouton "Rechercher", il faut aller prendre le compte local "SPSAdmin". Il faut lui définir la base "master" comme base par défaut.

Dans l'onglet suivant "Rôles du serveur", on coche :

  • dbcreator

  • securityadmin

A ce stade, on valide la création en cliquant sur "OK".
Notre compte d'administration de SharePoint a donc désormais les droits suffisants sur le moteur SQL Server 2005. Nous pouvons maintenant faire la copie des bases de données depuis le moteur SQL Server 2000 vers SQL Server 2005.

Copie des bases de données

Le déplacement des bases peut se faire de plusieurs manières, on peut passer par :

  • Backup - Restore

  • Detach - Attach

Dans notre exemple, nous passerons par le Detach-Attach qui est plus simple et rapide. Il nous permet aussi de toucher le moins possible au moteur SQL Server 2000.

Attention :
Il est bien sur fortement recommandé de faire une sauvegarde complète des bases de données avant de nous lancer dans cette copie.

Préparation des bases de données

Avant de faire ces modifications, il est conseillé de couper le serveur WEB (service Windows) afin d'éviter que les bases soient utilisées lors de nos modifications, si possible de prévenir les utilisateurs que les sites SharePoint seront en maintenance. Il faut aussi couper les services spécifiques SharePoint :

  • World Wide Web Publishing Service

  • SharePoint Timer Service

  • SharePoint Portal Alert

  • Microsoft SharePointPS Search

  • SharePoint Portal Administration

Il nous faut donc faire un vidage des Log de Transactions avant de faire cette copie. Je vous conseille d'ailleurs de lire l'article traitant du sujet :

  • MS SQL Server et les problématiques du journal de transaction

Une fois ce nettoyage effectué, nous allons détacher chacune des bases SharePoint du moteur SQL Server 2000 et copier les fichiers de données (xxx.mdf) et les fichiers de log (xxx.ldf) dans le répertoire des données pour SQL Server 2005 que l'on aura choisi.

Nous commençons par la base de configuration :

  • Dans notre exemple son nom est : SPS01_Config_db

Depuis l'interface SQL Server Enterprise Manager, on clique avec le bouton droit sur le nom de la base, puis "All Tasks" et "Detach Database...".

Une fenêtre apparaît nous présentant le nombre de connexions actives sur la base. On clique alors sur "Clear" pour couper celles-ci. Ensuite on clique sur OK pour détacher la base.

Une fenêtre de confirmation apparaît nous signalant que la base a bien été détachée. On voit d'ailleurs que celle-ci n'est plus présente dans la liste des bases de données.

Copie des fichiers

On peut maintenant copier les fichiers (pour notre exemple) :

  • SPS01_Config_db.mdf

  • SPS01_Config_db_log.LDF

Et les coller dans le répertoire (pour notre exemple) :

  • C:\SQL_DATAS\SQL_2005\

Maintenant que ces deux fichiers sont copiés nous allons les charger dans SQL Server 2005.

Chargement des bases dans SQL Server 2005

Toujours avec SSMSE, nous allons charger ces bases dans le moteur SQL Server 2005. Pour cela on clique avec le bouton droit de la souris sur "Databases" dans l'explorateur d'objets, et on choisit "Attach...".

On va maintenant chercher en cliquant sur "Ajouter..." le fichier "SPS01_Config_db.mdf" qui est maintenant dans le répertoire "C:\SQL_DATAS\SQL_2005\". On voit alors apparaître tous les détails de la base en question.

On peut alors cliquer sur "OK" afin de charger la base sur le moteur SQL Server 2005.

Modification sur la base
Une fois la base chargée, il faut effectuer des modifications pour bénéficier des avantages du nouveau moteur. Nous devons changer le mode de compatibilité pour cette base.
Le changement de compatibilité se fait en ouvrant les propriétés de la base (Bouton droit sur la base et Propriétés). On choisi l'onglet "Options" et sélectionne dans la liste déroulante "SQL Server 2005 (90)".

Cette base est maintenant montée correctement sous SQL Server 2005.

Il faut faire de même avec toutes les autres :

  • STS_xxxxx_xxxxx

  • xxxx_PROF

  • xxxx_SERV

  • xxxx_SITE

Une fois toutes les bases montées sur le moteur SQL Server 2005, Nous pouvons couper le moteur SQL Server 2000 et tous ses composants (SQL Agent, DTC et Microsoft Search), on modifie les paramètres afin que ces services ne se lancent plus à chaque redémarrage de l'OS.
Nous devons maintenant modifier les paramètres des applications SharePoint.

Modification des applications SharePoint

Modification de la base de registre

Dans un premier temps, nous allons modifier une clé dans la base de registre concernant la chaine de connexion de SharePoint pour la base de configuration.

Il faut en effet que SharePoint aille chercher la base de configuration sur la nouvelle instance SQL Server 2005 :

  • W2K3ENTSPS\SQL2005
    Pour cela, il faut lancer l'éditeur de la base de registre et modifier la clé :

  • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\Secure\ConfigDb]
    Cette clé contient actuellement :

  • Provider=SQLOLEDB;Server=W2K3ENTSPS;Database=SPS01_Config_db;User Id=;Password=
    Il faut donc remplacer "Server=W2K3ENTSPS" par "Server=W2K3ENTSPS\SQL2005". On referme l'éditeur de la base de registre et on redémarre le serveur, ce qui aura pour effet de recharger tous les services et que SharePoint prendra le nouveau serveur SQL pour sa base de configuration.

Modification dans le site d'administration de SharePoint

Dans la Global Admin, on peut déjà voir que la modification faite dans la base de registre a bien été prise en compte en allant dans l'écran "Configure Server Topology".

On doit donc modifier les deux autres références vers les bases de données :

  • Content database server

  • Component settings database server

Il suffit pour cela de cliquer sur chacun, de cocher "Use same server as configuration database" et de valider par "OK".

On obtient alors une page confirmant que la modification a bien été prise en compte.

Une fois ces deux références modifiées, on voit que la prise en compte est effective.

A ce stade, nous avons paramétré correctement le site SharePoint SPS. En revanche, SPS est basé sur WSS, il nous faut donc modifier aussi les paramètres de WSS.
Pour cela, depuis la "global admin", on va dans l'administration des sites WSS (sur la gauche "Windows SharePoint Services").
Une fois dans cette interface, nous trouvons dans la rubrique "Server Configuration" un lien :

  • Set default content database server

En allant dans cette partie, on retrouve notre ancien nom de serveur SQL (W2K3ENTSPS), il nous faut donc modifier ce champ en mettant le nouveau serveur "W2K3ENTSPS\SQL2005".

Une fois cliqué sur OK, on est renvoyé sur la page d'administration de WSS. On peut contrôler que la modification ait bien été prise en compte.
A ce stade, il nous faut modifier les Content DataBases de chaque site WSS.

Modification des Content Databases des sites WSS
Chaque site SharePoint contient une base WSS, même les portails SPS. Donc, à notre stade nous avons modifié le serveur pour le stockage des bases de contenu (Content DataBase) par défaut, mais les bases de contenu des sites WSS déjà existantes n'ont pas été modifiées, et sont donc encore référencés sur le serveur SQL 2000 (qui est d'ailleurs coupé).
Si nous ouvrons d'ailleurs la page d'accueil du portail SPS (ou n'importe quel site WSS) qui existe, nous obtenons un message d'erreur.

Le message d'erreur nous renvoie vers le site du support de Microsoft :

Nous ne tiendrons pas compte de cette erreur, car la raison est tout à fait normale dans notre situation, puisque le site essaye d'accéder à la base WSS (ou SPS) sur le server SQL 2000 qui est coupé.
Nous ferons cette modification pour la base de contenu du site WSS. Le process est différent pour les sites SPS que nous verrons par la suite.

Modification de la base de contenu du site WSS

Depuis la "global admin" ("Central Administration"), on choisit dans le menu les Windows SharePoint Services.

On choisit "Configure virtual server settings" et on sélectionne dans la liste des sites IIS disponibles le site "WSS_Demo_ILEM".

Une fois dans l'écran de configuration du site virtuel WSS, nous avons plusieurs rubriques. Nous devons aller dans la rubrique "Virtual Server Management". Dans cette rubrique, nous trouvons le lien :

  • Manage content databases

On obtient alors l'écran listant les bases de contenu assignées au site.

En effet, un site WSS ou SPS peut être réparti sur un ensemble de bases différentes, nous allons donc jouer sur cette possibilité afin de recharger notre base de contenu qui est sous SQL Server 2005 maintenant.
Pour cela, nous devons cliquer sur "Add a content database", afin de fournir les paramètre de cette base sur SQL Server 2005.

Nous devons donc spécifier une base manuellement avec les renseignements suivant :

  • Database server : W2K3ENTSPS\SQL2005

  • Database name : STS_w2k3entSPS_1863818433

  • Number of sites before a warning event is generated : 9000

  • Maximum number of sites that can be created in this database : 15000

On valide alors par le bouton "OK" et on voit un écran symbolisant le travail de création de cette association de la base existante et du site WSS.

Une fois cette assignation finie, on retourne à l'écran affichant les bases de contenu du site WSS, où on retrouve bien deux bases avec le même nom. En revanche seule la base que nous venons d'assigner affiche qu'il contient un site.

Nous devons donc simplement nettoyer la seconde base fantôme afin de ne plus voir qu'une seule base de contenu (celle de notre SQL Server 2005).
Pour cela il faut simplement cliquer sur le second nom de base, et on voit apparaître une case à cocher nous proposant d'enlever cette base de contenu de la liste "Remove content database".

On clique enfin sur "OK" et notre base de contenu fantôme n'est plus présente de la liste.

On peut maintenant se connecter sur le site WSS dont la base de contenu est désormais sous SQL Server 2005 et voir que celui-ci fonctionne correctement.

Cas de SPS

SPS est un peu particulier à ce niveau, malgré tout, ses données sont aussi stockées dans une (ou plusieurs) base(s) de contenu. Notre exemple n'en contient qu'une : "VirtualS1_SITE".
Si nous effectuons le même travail que précédemment pour le site WSS, nous obtenons alors sur le site SPS lorsqu'on se connecte sur celui-ci un message d'erreur.

Voyons donc maintenant comment effectuer cette migration pour les sites SPS.
Migration des sites SPS

SPS est particulier pour la gestion des bases de données SQL Server. En effet, pour chaque site SPS, on trouve trois bases de données :

  • xxx_SITE

  • xxx_PROF

  • xxx_SERV

Ainsi la modification de la base de contenu WSS du site SPS, ne recharge que la base xxx_SITE. En revanche en interne, le moteur SPS cherche toujours à obtenir les informations des bases xxx_PROF (Base de gestion du profiling sous SPS) et xxx_SERV (Base de gestion du moteur de recherche de SPS) qui pour lui sont toujours sur le moteur SQL Server 2000.
La problématique est donc différente puisqu'il faut faire en sorte que le site SPS recharge les trois bases de données et non seulement la base de contenu.
La seule solution est de supprimer le site SPS existant et de le recréer en associant la base existante.
Suppression du site SPS

Il faut donc aller dans la "global admin", choisir "SharePoint Portal Server" dans le menu de gauche. Puis aller dans la rubrique "Portal Site and Virtual Server Configuration" et cliquer sur "List and manage portal sites".

Une fois dans l'écran listant les portails existants sur le serveur. Il faut donc aller sur la droite du site SPS que l'on veut migrer et on voit une flèche apparaître qui nous propose deux choix :

  • Gérer les propriétés du site SPS

  • Supprimer le site SPS

Nous allons sélectionner le second choix afin de supprimer les références de ce site SPS.

A ce moment, nous voyons apparaître les trois bases de données avec le nom du serveur de chacun.

  • W2K3ENTSPS\SQL2005:VirtualS1_SITE

  • W2K3ENTSPS:VirtualS1_PROF

  • W2K3ENTSPS:VirtualS1_SERV

A ce moment, nous avons deux possibilités :

  • Supprimer toutes les bases de données

  • Ne pas supprimer les bases de données

  • Dans notre cas, nous ne cochons pas la première ligne afin de ne pas supprimer la base de contenu qui a déjà été modifiée.

Et nous cliquons sur "OK".
Une barre de défilement apparaît symbolisant la suppression du site SPS.

Et nous avons un message nous confirmant que la suppression est bien effective.

En revanche, les bases sont toujours présentes sur notre SQL Server 2005. Nous allons donc recréer notre site SPS en associant à celui-ci les bases existantes sur SQL Server 2005.

Recréation du site SPS

Pour cela, il faut retourner dans la liste des sites portails :
Central Admin > Portal Site and Virtual Server Configuration > List and manage portal sites

On clique alors sur "Restore Portal Site". On doit ensuite renseigner tous les champs avec chaque base et chaque serveur :

  • Site database server: W2K3ENTSPS\SQL2005

  • Site database name: VirtualS1_SITE

  • User profile database server: 2K3ENTSPS\SQL2005

  • User profile database name: VirtualS1_PROF

  • Services database server: W2K3ENTSPS\SQL2005

  • Services database name: VirtualS1_SERV

On clique alors sur "OK", on obtient maintenant une fenêtre d'avertissement sur le fait que nous créons un site portail SPS dans un répertoire non vide. Cela provoquera alors l'effacement de tout l'ancien contenu.

Nous cliquons sur "OK" pour valider cette création. Nous avons alors une fenêtre symbolisant cette création avec une barre de progression.

Le site SPS est enfin créé et nous avons les liens pour ouvrir le site ou son administration.

Nous pouvons ouvrir le site SPS et voir que celui-ci fonctionne correctement.

ATTENTION :

Dans le cas de développement de WebParts personnalisées pour le portail, il faut absolument faire une sauvegarde du répertoire du site SPS avant de supprimer celui-ci.
En effet, la suppression depuis la "global admin" supprime tous les fichiers contenu dans le répertoire du site SPS (Web.Config y compris).
De ce fait, dans le cas de WebPart personnalisées avec des accès sur des bases spécifique la chaine de connexion éventuellement stockée dans le Web.Config aura été supprimée.

Conclusion

Dans cet article nous avons vu la complexité d'un changement d'architecture dans les applications SharePoint. On peut aussi remarquer que les bases de données sont bien le cœur des applications SharePoint. Ce qui nous amène à réfléchir sur les choix technologiques et matériels lors d'une nouvelle infrastructure.

Ainsi, il ne faut pas prendre à la légère la configuration des machines SQL Server (2000 ou 2005). Ces machines doivent pouvoir soutenir des charges importantes du fait du stockage intégral des informations (données et fichiers).

Vous pouvez trouver de plus amples informations sur les liens ci-dessous :

En vous souhaitant de bons projets de développement.

Romelard Fabrice (alias F___)
Consultant Technique ilem SA