Freigeben über


Ändern von partitionierten Tabellen und Indizes

Es gibt folgende Möglichkeiten, um partitionierte Tabellen und Indizes zu ändern:

  • Ändern einer Partitionsfunktion, um daran beteiligte Tabellen und Indizes neu zu partitionieren.

  • Ändern eines Partitionsschemas, um eine Dateigruppe zum Aufnehmen einer neu hinzugefügten Partition zu bestimmen.

  • Konvertieren einer nicht partitionierten Tabelle in eine partitionierte Tabelle.

  • Konvertieren einer partitionierten Tabelle in eine nicht partitionierte Tabelle.

  • Übertragen von Daten durch Hinzufügen, Verschieben oder Entfernen von Partitionen.

Ändern einer Partitionsfunktion

Sie können Tabellen- oder Indexpartitionen durch Hinzufügen oder Abziehen der angegebenen Partitionsanzahl in Schritten von 1 in der Partitionsfunktion der partitionierten Tabelle bzw. des Indexes ändern.

Beim Hinzufügen einer Partition "teilen" Sie eine vorhandene Partition "auf" und definieren die Partitionsbegrenzungen erneut. Wenn Sie eine Partition löschen, "führen" Sie die Begrenzungen von zwei Partitionen "zusammen". Diese Aktion füllt eine Partition neu und belässt die andere Partition ohne Zuordnung.

Wichtiger HinweisWichtig

Beim Hinzufügen einer Partition muss eine Dateigruppe vorhanden und mit der NEXT USED-Eigenschaft gekennzeichnet sein, um die neue Partition aufnehmen zu können. Informationen zum Angeben einer NEXT USED-Dateigruppe in einem Partitionsschema finden Sie unter Ändern eines Partitionsschemas weiter unten in diesem Thema.

ALTER PARTITION FUNCTION kann nur verwendet werden, um eine Partition in zwei aufzuteilen bzw. um zwei Partitionen in eine zusammenzuführen. Um andere Partitionsänderungen in Tabellen bzw. Indizes vorzunehmen (Zusammenführen von 10 in 5 Partitionen z. B.), können Sie eine der folgenden Optionen verwenden. Abhängig von der Konfiguration Ihres Systems verbrauchen diese Optionen mehr oder weniger Ressourcen.

  • Erstellen Sie eine neue partitionierte Tabelle mithilfe der Partitionsfunktion Ihrer Wahl, und fügen Sie anschließend über eine INSERT INTO...SELECT FROM-Anweisung die Daten aus der alten Tabelle in die neue ein.

  • Erstellen Sie einen partitionierten gruppierten Index für einen Heap.

    HinweisHinweis

    Partitionierte Indizes, die gelöscht werden, verursachen partitionierte Heaps.

  • Löschen Sie einen vorhandenen partitionierten Index und erstellen Sie ihn neu, indem Sie den Transact-SQL-Befehl CREATE INDEX mit der DROP EXISTING = ON-Klausel verwenden.

  • Führen Sie eine Reihe von ALTER PARTITION FUNCTION-Anweisungen aus.

In SQL Server wird die Replikation beim Ändern einer Partitionsfunktion nicht unterstützt.Wenn Sie Änderungen an Partitionsfunktionen in der Veröffentlichungsdatenbank vornehmen möchten, müssen Sie diese manuell in der Abonnementdatenbank durchführen.

So ändern Sie eine Partitionsfunktion

Ändern eines Partitionsschemas

Sie können ein Partitionsschema ändern, indem Sie eine Dateigruppe zum Aufnehmen der nächsten Partition bestimmen, die der partitionierten Tabelle hinzugefügt werden soll. Dies erreichen Sie, indem Sie einer Dateigruppe die NEXT USED-Eigenschaft zuweisen. Die NEXT USED-Eigenschaft können Sie einer leeren Dateigruppe zuweisen oder einer Dateigruppe, die bereits eine Partition besitzt. Eine Dateigruppe kann also mehr als eine Partition aufweisen.

So ändern Sie ein Partitionsschema

Konvertieren einer nicht partitionierten Tabelle in eine partitionierte Tabelle

Es gibt zwei Möglichkeiten, um eine vorhandene nicht partitionierte Tabelle in eine partitionierte Tabelle umzuwandeln.

Die erste besteht darin, mithilfe der CREATE INDEX-Anweisung einen partitionierten gruppierten Index für die Tabelle zu erstellen. Diese Aktion gleicht dem Erstellen eines gruppierten Indexes für eine beliebige Tabelle, denn im Wesentlichen löscht SQL Server dabei die Tabelle und erstellt sie erneut im Format eines gruppierten Indexes. Wenn auf die Tabelle bereits ein partitionierter gruppierter Index angewendet wurde, können Sie diesen Index löschen und auf der Grundlage eines Partitionsschemas neu erstellen, indem Sie die CREATE INDEX-Anweisung mit der DROP EXISTING = ON-Klausel verwenden.

Informationen zu gruppierten Indizes finden Sie unter Richtlinien für den Entwurf gruppierter Indizes.

Die zweite Möglichkeit besteht darin, die ALTER TABLE SWITCH-Anweisung von Transact-SQL zu verwenden, damit die Daten der Tabelle auf eine bereichspartitionierte Tabelle mit nur einer Partition überwechseln. Diese partitionierte Tabelle muss bereits vor der Konvertierung vorhanden sein, und ihre (einzige) Partition muss leer sein. Weitere Informationen zum Wechseln von Partitionen finden Sie unter Effizientes Übertragen von Daten durch Partitionswechsel. Wenn eine Tabelle zu einer partitionierten Tabelle geändert wurde, können Sie ihre Partitionsfunktion ändern, um Partitionen hinzuzufügen, wie weiter oben unter Ändern einer Partitionsfunktion beschrieben.

So konvertieren Sie eine vorhandene Tabelle in eine partitionierte Tabelle

Konvertieren einer partitionierten Tabelle in eine nicht partitionierte Tabelle

Das Ändern einer partitionierten Tabelle zu einer nicht partitionierten Tabelle bedeutet, die Partitionsfunktion einer partitionierten Tabelle zu ändern, sodass die Tabelle nur noch eine Partition enthält. Das Ergebnis ist zwar technisch gesehen weiterhin eine partitionierte Tabelle; dieser Status ist jedoch für alle nachfolgenden Vorgänge, die in der Tabelle ausgeführt werden sollen, irrelevant.

Wenn auf die Tabelle ein partitionierter, gruppierter Index angewendet wurde, können Sie dasselbe Ergebnis erreichen, indem Sie den Index löschen und als nicht partitionierten Index neu erstellen. Verwenden Sie dazu den CREATE INDEX-Befehl von Transact-SQL mit der DROP EXISTING = ON-Klausel.

So konvertieren Sie eine partitionierte Tabelle in eine Standardtabelle ohne Partition

Übertragen von Daten mit Partitionswechsel

Mit der Transact-SQL-ALTER TABLE...SWITCH-Anweisung können Sie Datenblöcke rasch und effizient zwischen partitionierten Tabellen übertragen. Weitere Informationen finden Sie unter Effizientes Übertragen von Daten durch Partitionswechsel.