Ändern des Datenbankservers in einer SharePoint-Farm

Zusammenfassung

In einer SharePoint-Farm müssen Sie möglicherweise Datenbanken von einem Server, auf dem SQL Server ausgeführt wird, zu einem anderen migrieren. Wenn Sie während der SharePoint-Installation keinen SQL Server Clientalias verwenden oder den Datenbankserver aus verschiedenen Gründen umbenennen müssen (z. B. nach einer Sicherheitsverletzung), führen Sie die Schritte in diesem Artikel aus, um den Datenbankserver zu ändern.

Durch gute Planung und Hochverfügbarkeit können Sie diese Schritte in einer Produktionsumgebung ausführen, ohne alle Dienste beenden zu müssen.

Ändern des Datenbankservers

In diesem Artikel wird davon ausgegangen, dass alle SharePoint-Datenbanken auf einer einzelnen SQL Server instance gehostet werden. Passen Sie die Parameter in diesen Schritten nach Bedarf für Ihre Umgebung an.

Bevor Sie beginnen, erstellen Sie eine Sicherung der Konfigurationsdatenbank zur Problembehandlung, falls beim Ausführen der Schritte nicht mehr auf die SharePoint-Farm zugegriffen werden kann.

Wichtig

Bevor Sie beginnen, stellen Sie sicher, dass Sie mit diesem Aktionsplan vertraut sind. Wenn auf die SharePoint-Farm nicht mehr zugegriffen werden kann oder die Konfigurationsdatenbank beschädigt wird, müssen Sie die Funktionalität aus der letzten Farmsicherung wiederherstellen.

Schritt 1: Erstellen eines neuen SQL-Alias auf allen SharePoint-Servern in der Farm

Gehen Sie dazu wie folgt vor:

  1. Stellen Sie sicher, dass Sie ein Benutzerkonto verwenden, das Mitglied der folgenden Ist:
    • Der Gruppe Administratoren
    • Feste Datenbankrolle db_owner
  2. Starten Sie das cliconfg.exe (SQL Server Client Network Utility). Dieses Hilfsprogramm befindet sich in der Regel im Ordner C:\Windows\SysWOW64 (32-Bit) oder C:\Windows\System32 (64-Bit).
  3. Prüfen Sie auf der Registerkarte Allgemein, dass TCP/IP aktiviert ist.
  4. Klicken Sie auf der Registerkarte Alias auf Hinzufügen.
    Hinweis Das Fenster Netzwerkbibliothekskonfiguration hinzufügen wird angezeigt.
  5. Geben Sie im Feld Serveralias den Namen des neuen alias SQL Server ein.
  6. Klicken Sie im Bereich Netzwerkbibliotheken auf TCP/IP.
  7. Geben Sie im Feld Servername im Bereich Verbindungsparameter den vollqualifizierten Domänennamen des neuen Servers ein, auf dem SQL Server ausgeführt wird, und klicken Sie dann auf OK.
  8. Wiederholen Sie die Schritte 2 bis 7 auf allen SharePoint-Servern, die eine Verbindung mit dem instance SQL Server herstellen, der die Datenbanken hostet.

Schritt 2: Verweisen der SharePoint-Datenbanken auf den neuen SQL-Alias

Dieser Schritt ändert den SQL Server instance Zeiger für alle SharePoint-Datenbanken. Wenn Sie die Datenbanken auf verschiedenen SQL Server-Instanzen speichern möchten, ändern Sie das Skript entsprechend.

Wichtig

Die SharePoint-Konfigurationsdatenbank und die Inhaltsdatenbank der Zentraladministration müssen sich auf demselben SQL Server instance befinden.
Um den SQL Server instance-Zeiger zu ändern, führen Sie das folgende PowerShell-Skript in einem SharePoint-Verwaltungsshell-Fenster mit erhöhten Rechten aus:

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

Führen Sie zum Überprüfen der Änderung das folgende PowerShell-Cmdlet in einem SharePoint-Verwaltungsshell-Fenster mit erhöhten Rechten aus:

Get-SPDatabase | Select Name,Server  

Sie sollten ein Ergebnis erhalten, das dem folgenden Beispiel ähnelt:

Screenshot einer Datenbankausgabe nach dem Ausführen des relevanten PowerShell-Cmdlets in einem SharePoint-Verwaltungsshellfenster mit erhöhten Rechten.

Schritt 3: Verweisen Der Standarddatenbank-instance für die Webanwendungen auf den neuen SQL Server instance

Dieser Schritt ist erforderlich, damit beim Erstellen von Datenbanken ohne Angabe des Datenbankservers keine Verbindung mit dem alten SQL Server instance hergestellt wird.

Der folgende Aktionsplan verweist alle Datenbanken auf denselben SQL Server instance (die Datenbank, die für die Konfigurationsdatenbank dient). Ändern Sie dieses Skript entsprechend Ihren Anforderungen.

Führen Sie das folgende PowerShell-Skript in einem SharePoint-Verwaltungsshell-Fenster mit erhöhten Rechten aus:

$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()  
 }  

Führen Sie zum Überprüfen der Änderung das folgende PowerShell-Cmdlet in einem SharePoint-Verwaltungsshell-Fenster mit erhöhten Rechten aus:

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

Sie sollten ein Ergebnis erhalten, das dem folgenden Beispiel ähnelt:

Screenshot einer Datenbank instance Ausgabe nach dem Ausführen des relevanten PowerShell-Cmdlets in einem SharePoint-Verwaltungsshellfenster mit erhöhten Rechten.

Schritt 4: Ändern der Clusterkonfiguration für verteilten Cache

Wichtig

In diesem Schritt wird beschrieben, wie Sie die SharePoint-Konfigurationsdatenbank direkt ändern. Direkte Datenbankänderungen werden für die meisten SharePoint-bezogenen Datenbanken im Allgemeinen nicht unterstützt. Die hier angegebenen Aktionen sind nur für diesen bestimmten Zweck zulässig. Wir erteilen keine Berechtigung zum Ausführen dieser Schritte, um andere Änderungen vorzunehmen.

Gehen Sie dazu wie folgt vor:

  1. Rufen Sie das aktuelle Konfigurationsobjekt von dem Server ab, auf dem SQL Server ausgeführt wird, indem Sie die folgende SQL-Abfrage verwenden:

    SELECT [ID],[Properties]  
    FROM [SharePoint_Config].[dbo].[Objects]  
    WITH (NOLOCK)  
    WHERE Properties like '%_cacheConfigStorageLocation%'  
    
  2. Die Abfrage gibt eine einzelne Zeile mit zwei Spalten zurück. Eine Spalte ist für die GUID des Konfigurationselements und die andere für den Inhalt des Konfigurationselements, wie im folgenden Beispiel gezeigt:

    <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. Kopieren Sie das Ergebnis in Editor, und ersetzen Sie dann Folgendes durch die neue SQL Server instance:

    Data Source=SPSQLRenamed;Initial Catalog=SharePoint_Config;
    
  4. Führen Sie den folgenden SQL-Befehl aus, um das Konfigurationsobjekt zu aktualisieren:

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

Schritt 5: Erneutes Bereitstellen des Verteilten Cachediensts auf allen Servern mit verteiltem Cache

Gehen Sie dazu wie folgt vor:

  1. Fahren Sie den Dienst auf einem der Verteilten Cacheserver ordnungsgemäß herunter, indem Sie das folgende PowerShell-Cmdlet in einer PowerShell-Eingabeaufforderung mit erhöhten Rechten ausführen:

    Use-CacheCluster  
    Stop-CacheHost -Graceful -CachePort 22233 -ComputerName $env:COMPUTERNAME  
    
  2. Warten Sie, bis der Dienst beendet wurde. Sie können die status mit dem folgenden PowerShell-Cmdlet überwachen:

    Get-CacheHost  
    

    Wenn der Dienst beendet wird, sollten Sie ein Ergebnis erhalten, das dem folgenden Beispiel ähnelt:

    Screenshot der Ausgabe des Cachehosts, nachdem der Dienst beendet wurde, indem das entsprechende PowerShell-Cmdlet in einer PowerShell-Eingabeaufforderung mit erhöhten Rechten ausgeführt wird.

  3. Entfernen Sie den lokalen Server aus dem Verteilten Cachecluster, indem Sie das folgende PowerShell-Cmdlet ausführen:

    Remove-SPDistributedCacheServiceInstance  
    
  4. Stellen Sie den lokalen Server im Cluster für verteilten Cache wieder her, indem Sie das folgende PowerShell-Cmdlet ausführen:

    Add-SPDistributedCacheServiceInstance  
    
  5. Öffnen Sie registry Editor, und überprüfen Sie dann, ob der ConnectionString-Wert des Schlüssels HKLM\SOFTWARE\Microsoft\AppFabric\V1.0\Configuration aktualisiert wird. Hier ein Beispiel:

    Screenshot: Registrierungs-Editor, in dem überprüft wird, ob der ConnectionString-Wert des Schlüssels HKLM\SOFTWARE\Microsoft\AppFabric\V1.0\Configuration aktualisiert wird.

  6. Wiederholen Sie die Schritte 1 bis 5 auf jedem der anderen Server im Verteilten Cachecluster.

Schritt 6: Entfernen des Verweises auf den alten Server

Führen Sie dazu das folgende PowerShell-Cmdlet in einem SharePoint-Verwaltungsshell-Fenster mit erhöhten Rechten aus:

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

Schritt 7: Überprüfen der Änderung

Führen Sie das folgende Cmdlet aus, um zu überprüfen, ob der Datenbankserver erfolgreich geändert wurde:

Get-SPServer  

Sie sollten ein Ergebnis erhalten, das dem folgenden Beispiel ähnelt:

Screenshot einer Serverausgabe nach dem Ausführen des entsprechenden Cmdlets, um zu überprüfen, ob der Datenbankserver erfolgreich geändert wurde.

Weitere Informationen

Benötigen Sie weitere Hilfe? Navigieren Sie zu SharePoint-Community.