Comment modifier le serveur de base de données dans une batterie de serveurs SharePoint

Résumé

Dans une batterie de serveurs SharePoint, vous devrez peut-être migrer des bases de données d’un serveur qui exécute SQL Server vers un autre. Si vous n’utilisez pas d’alias de client SQL Server pendant l’installation de SharePoint, ou si vous devez renommer le serveur de base de données pour différentes raisons (par exemple, après une violation de sécurité), suivez les étapes décrites dans cet article pour modifier le serveur de base de données.

Grâce à une bonne planification et à une haute disponibilité, vous pouvez effectuer ces étapes dans un environnement de production sans avoir à arrêter tous les services.

Modifier le serveur de base de données

Cet article suppose que toutes les bases de données SharePoint sont hébergées sur un seul SQL Server instance. Ajustez les paramètres de ces étapes si nécessaire pour votre environnement.

Avant de commencer, créez une sauvegarde de la base de données de configuration à des fins de résolution des problèmes au cas où la batterie de serveurs SharePoint deviendrait inaccessible lorsque vous effectuez les étapes.

Importante

Avant de commencer, assurez-vous de bien comprendre ce plan d’action. Si la batterie de serveurs SharePoint devient complètement inaccessible, ou si la base de données de configuration est endommagée, vous devez restaurer la fonctionnalité à partir de la dernière sauvegarde de la batterie de serveurs.

Étape 1 : Créer un alias SQL sur tous les serveurs SharePoint de la batterie de serveurs

Pour cela, procédez comme suit :

  1. Veillez à utiliser un compte d’utilisateur membre des éléments suivants :
    • du groupe Administrateurs ;
    • Le rôle de base de données fixe db_owner.
  2. Démarrez l’utilitaire réseau client SQL Server (cliconfg.exe). Cet utilitaire se trouve généralement dans le dossier C :\Windows\SysWOW64 (32 bits) ou C :\Windows\System32 (64 bits).
  3. Sous l’onglet Général, vérifiez que TCP/IP est activé.
  4. Sous l’onglet Alias , cliquez sur Ajouter.
    Note La fenêtre Ajouter une configuration de bibliothèque réseau s’affiche .
  5. Dans la zone Alias du serveur, entrez le nom du nouvel alias SQL Server.
  6. Dans la zone Bibliothèques réseau, cliquez sur TCP/IP.
  7. Dans la zone Nom du serveur de la zone Paramètres de connexion, entrez le nom de domaine complet du nouveau serveur qui exécute SQL Server, puis cliquez sur OK.
  8. Répétez les étapes 2 à 7 sur tous les serveurs SharePoint qui se connectent au instance de SQL Server qui héberge les bases de données.

Étape 2 : Pointer les bases de données SharePoint vers le nouvel alias SQL

Cette étape modifie le pointeur SQL Server instance sur toutes les bases de données SharePoint. Si vous souhaitez stocker les bases de données sur différentes instances SQL Server, modifiez le script en conséquence.

Importante

La base de données de configuration SharePoint et la base de données de contenu de l’Administration centrale doivent résider sur le même SQL Server instance.
Pour modifier le pointeur SQL Server instance, exécutez le script PowerShell suivant dans une fenêtre SharePoint Management Shell avec élévation de privilèges :

$SPDBs = Get-SPDatabase  
 ForEach ($DB in $SPDBs)  
 {  
     $DB.ChangeDatabaseInstance('SPSQLRenamed')  
 }  

Pour vérifier la modification, exécutez l’applet de commande PowerShell suivante dans une fenêtre SharePoint Management Shell avec élévation de privilèges :

Get-SPDatabase | Select Name,Server  

Vous devez recevoir un résultat similaire à l’exemple suivant :

Capture d’écran d’une sortie de base de données après l’exécution de l’applet de commande PowerShell appropriée dans une fenêtre SharePoint Management Shell avec élévation de privilèges.

Étape 3 : Pointer la base de données par défaut instance pour les applications web vers la nouvelle SQL Server instance

Cette étape est nécessaire pour que lorsque vous créez des bases de données sans spécifier le serveur de base de données, elles ne se connectent pas à l’ancien SQL Server instance.

Le plan d’action suivant va pointer toutes les bases de données vers la même SQL Server instance (celle qui sert la base de données de configuration). Modifiez ce script pour qu’il corresponde à vos besoins.

Exécutez le script PowerShell suivant dans une fenêtre SharePoint Management Shell avec élévation de privilèges :

$ConfigDB = Get-SPDatabase | ?{$_.Name -eq 'SharePoint_Config'}  
 $WebApps = Get-SPWebApplication -IncludeCentralAdministration  
 ForEach ($WebApp in $WebApps)  
 {  
     $WebApp.Parent.DefaultDatabaseInstance = $ConfigDB.ServiceInstance  
     $webapp.Parent.Update()  
     $webapp.Update()  
 }  

Pour vérifier la modification, exécutez l’applet de commande PowerShell suivante dans une fenêtre SharePoint Management Shell avec élévation de privilèges :

$webapps = Get-SPWebApplication -IncludeCentralAdministration  
 foreach ($webapp in $webapps)  
 {  
     Write-host "WebAppUrl: $($webapp.DisplayName)`tDefaultDatabaseInstance: $($webapp.Parent.DefaultDatabaseInstance.DisplayName)"  
 }  

Vous devez recevoir un résultat semblable à l’exemple suivant :

Capture d’écran d’une base de données instance sortie après l’exécution de l’applet de commande PowerShell appropriée dans une fenêtre SharePoint Management Shell avec élévation de privilèges.

Étape 4 : Modifier la configuration du cluster de cache distribué

Importante

Cette étape explique comment modifier directement la base de données de configuration SharePoint. La modification directe de base de données n’est généralement pas prise en charge pour la plupart des bases de données liées à SharePoint. Les actions spécifiées ici sont autorisées uniquement à cet effet spécifique. Nous n’accordons pas l’autorisation d’utiliser ces étapes pour apporter d’autres modifications.

Pour cela, procédez comme suit :

  1. Obtenez l’objet de configuration actuel à partir du serveur qui exécute SQL Server à l’aide de la requête SQL suivante :

    SELECT [ID],[Properties]  
    FROM [SharePoint_Config].[dbo].[Objects]  
    WITH (NOLOCK)  
    WHERE Properties like '%_cacheConfigStorageLocation%'  
    
  2. La requête retourne une seule ligne qui a deux colonnes. Une colonne correspond au GUID de l’élément de configuration et l’autre au contenu de l’élément de configuration, comme dans l’exemple suivant :

    <object type="Microsoft.SharePoint.DistributedCaching.Utilities.SPDistributedCacheClusterInfo, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=Token"><fld type="Microsoft.SharePoint.DistributedCaching.Utilities.SPDistributedCacheClusterConfigStorageLocation, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=Token" name="_cacheConfigStorageLocation"><object type="Microsoft.SharePoint.DistributedCaching.Utilities.SPDistributedCacheClusterConfigStorageLocation, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=Token"><sFld type="String" name="_provider">SPDistributedCacheClusterProvider</sFld><sFld type="String" name="_connectionString">Data Source=SPSQLRenamed;Initial Catalog=SharePoint_Config;Integrated Security=True;Persist Security Info=False;Enlist=False;Pooling=True;Min Pool Size=0;Max Pool Size=100;PoolBlockingPeriod=Auto;Asynchronous Processing=False;Connection Reset=True;MultipleActiveResultSets=False;Replication=False;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;Load Balance Timeout=0;Packet Size=8000;Type System Version=Latest;Application Name=".Net SqlClient Data Provider";User Instance=False;Context Connection=False;Transaction Binding="Implicit Unbind";ApplicationIntent=ReadWrite;MultiSubnetFailover=False;TransparentNetworkIPResolution=True;ConnectRetryCount=1;ConnectRetryInterval=10;Column Encryption Setting=Disabled</sFld></object></fld><sFld type="String" name="_clusterSize">medium</sFld><sFld type="Boolean" name="_enableHA">False</sFld><sFld type="Boolean" name="_isInitialized">True</sFld><sFld type="Boolean" name="_isDataCacheSecurityEnabled">False</sFld><sFld type="Boolean" name="m_DeploymentLocked">False</sFld><fld type="System.Collections.Hashtable, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=Token" name="m_UpgradedPersistedFields" /><fld name="m_Properties" type="null" /><sFld type="String" name="m_LastUpdatedUser">SP2016\Administrator</sFld><sFld type="String" name="m_LastUpdatedProcess">psconfigui (3536)</sFld><sFld type="String" name="m_LastUpdatedMachine">SP16APP1</sFld><sFld type="DateTime" name="m_LastUpdatedTime">Time</sFld><fld name="m_LastUpdatedStackTrace" type="null" /><sFld type="Int32" name="m_LastUpdatedThreadId">31</sFld><sFld type="Guid" name="m_LastUpdatedCorrelationId">CorrelationId</sFld></object>.
    
  3. Copiez le résultat dans le Bloc-notes, puis remplacez ce qui suit par le nouveau SQL Server instance :

    Data Source=SPSQLRenamed;Initial Catalog=SharePoint_Config;
    
  4. Exécutez la commande SQL suivante pour mettre à jour l’objet de configuration :

    UPDATE Objects  
    SET Properties = '[content in Notepad]'  
    WHERE ID = '[GUID of the configuration object in the query result]'  
    

Étape 5 : Reprovisionner le service de cache distribué sur tous les serveurs de cache distribué

Pour cela, procédez comme suit :

  1. Sur l’un des serveurs de cache distribué, arrêtez correctement le service en exécutant l’applet de commande PowerShell suivante dans une invite PowerShell avec élévation de privilèges :

    Use-CacheCluster  
    Stop-CacheHost -Graceful -CachePort 22233 -ComputerName $env:COMPUTERNAME  
    
  2. Attendez que le service soit arrêté. Vous pouvez surveiller les status à l’aide de l’applet de commande PowerShell suivante :

    Get-CacheHost  
    

    Lorsque le service est arrêté, vous devez recevoir un résultat similaire à l’exemple suivant :

    Capture d’écran de la sortie de l’hôte de cache après l’arrêt du service en exécutant l’applet de commande PowerShell appropriée dans une invite PowerShell avec élévation de privilèges.

  3. Supprimez le serveur local du cluster De cache distribué en exécutant l’applet de commande PowerShell suivante :

    Remove-SPDistributedCacheServiceInstance  
    
  4. Restaurez le serveur local sur le cluster Distributed Cache en exécutant l’applet de commande PowerShell suivante :

    Add-SPDistributedCacheServiceInstance  
    
  5. Ouvrez le Registre Rédacteur, puis vérifiez que la valeur ConnectionString de la clé HKLM\SOFTWARE\Microsoft\AppFabric\V1.0\Configuration est mise à jour. Voici un exemple :

    Capture d’écran de la Rédacteur du Registre, qui vérifie que la valeur ConnectionString de la clé HKLM\SOFTWARE\Microsoft\AppFabric\V1.0\Configuration est mise à jour.

  6. Répétez les étapes 1 à 5 sur chacun des autres serveurs du cluster de cache distribué.

Étape 6 : Supprimer la référence à l’ancien serveur

Pour ce faire, exécutez l’applet de commande PowerShell suivante dans une fenêtre SharePoint Management Shell avec élévation de privilèges :

$OldServer = Get-SPServer | ?{$_.Address -eq '<The name of the SQL Server to be removed>'}  
 $OldServer.Delete()  

Étape 7 : Vérifier la modification

Pour vérifier que le serveur de base de données a été correctement modifié, exécutez l’applet de commande suivante :

Get-SPServer  

Vous devez recevoir un résultat semblable à l’exemple suivant :

Capture d’écran d’une sortie de serveur après l’exécution de l’applet de commande appropriée pour vérifier que le serveur de base de données a été correctement modifié.

Informations supplémentaires

Encore besoin d’aide ? Accédez au site de la Communauté SharePoint.