Erstellen partitionierter Tabellen und Indizes

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Sie können eine partitionierte Tabelle oder einen Index in SQL Server, Azure SQL-Datenbank und azure SQL Managed Instance mithilfe von SQL Server Management Studio oder Transact-SQL erstellen. Die Daten in partitionierten Tabellen und Indizes werden horizontal in Einheiten unterteilt, die über mehrere Dateigruppen in einer Datenbank verteilt oder in einer einzelnen Dateigruppe gespeichert werden können. Die Partitionierung kann bewirken, dass sich große Tabellen und Indizes besser verwalten und skalieren lassen.

Das Erstellen einer partitionierten Tabelle oder eines Indexes erfolgt in der Regel in drei oder vier Teilen:

  1. Erstellen Sie optional eine Dateigruppe oder Dateigruppe und entsprechende Datendateien, die die durch das Partitionsschema angegebenen Partitionen enthalten. Der Hauptgrund für das Platzieren von Partitionen auf mehreren Dateigruppen besteht darin, sicherzustellen, dass Sie Sicherungs- und Wiederherstellungsvorgänge in Dateigruppen unabhängig ausführen können. Wenn dies nicht erforderlich ist, können Sie alle Partitionen einer einzelnen Dateigruppe zuweisen, indem Sie entweder eine vorhandene Dateigruppe verwenden, z PRIMARY. B. eine neue Dateigruppe mit verwandten Datendateien. In fast allen Szenarien erzielen Sie alle Vorteile der Partitionierung , unabhängig davon, ob Sie mehrere Dateigruppen verwenden.

  2. Erstellen Sie eine Partitionsfunktion , die die Zeilen einer Tabelle oder eines Indexes basierend auf den Werten einer angegebenen Spalte in Partitionen zuordnet. Sie können eine einzelne Partitionsfunktion verwenden, um mehrere Objekte zu partitionieren.

  3. Erstellen Sie ein Partitionsschema , das die Partitionen einer partitionierten Tabelle oder eines Indexes einer Dateigruppe oder mehreren Dateigruppen zuordnet. Sie können ein einzelnes Partitionsschema verwenden, um mehrere Objekte zu partitionieren.

  4. Erstellen oder ändern Sie eine Tabelle oder einen Index, und geben Sie das Partitionsschema als Speicherort zusammen mit der Spalte an, die als Partitionierungsspalte dient.

Hinweis

Die Partitionierung wird in der Azure SQL-Datenbank vollständig unterstützt. Da nur die Dateigruppe in der PRIMARY Azure SQL-Datenbank unterstützt wird, müssen alle Partitionen in der PRIMARY Dateigruppe platziert werden.

Die Tabellenpartitionierung ist auch in dedizierten SQL-Pools in Azure Synapse Analytics mit einigen Syntaxunterschieden verfügbar. Weitere Informationen finden Sie in Partitionierungstabellen im dedizierten SQL-Pool.

Berechtigungen

Zum Erstellen einer partitionierten Tabelle sind die CREATE TABLE-Berechtigung für die Datenbank und die ALTER-Berechtigung für das Schema erforderlich, in dem die Tabelle erstellt wird. Das Erstellen eines partitionierten Indexes erfordert die ALTER-Berechtigung für die Tabelle oder Sicht, in der der Index erstellt wird. Das Erstellen einer partitionierten Tabelle oder eines partitionierten Indexes erfordert eine der folgenden zusätzlichen Berechtigungen:

  • ALTER ANY DATASPACE-Berechtigung. Diese Berechtigung gilt standardmäßig für Mitglieder der festen Serverrolle sysadmin und für Mitglieder der festen Datenbankrollen db_owner und db_ddladmin .

  • CONTROL- oder ALTER-Berechtigung für die Datenbank, in der die Partitionsfunktion und das Partitionsschema erstellt werden.

  • CONTROL SERVER- oder ALTER ANY DATABASE-Berechtigung für den Server der Datenbank, in der die Partitionsfunktion und das Partitionsschema erstellt werden.

Erstellen einer partitionierten Tabelle in einer Dateigruppe mithilfe von Transact-SQL

Wenn Sie Sicherungs- und Wiederherstellungsvorgänge für Dateigruppen nicht unabhängig durchführen müssen, vereinfacht das Partitionieren einer Tabelle mithilfe einer einzelnen Dateigruppe die Verwaltung der partitionierten Tabelle im Laufe der Zeit.

Dieses Beispiel eignet sich für die Azure SQL-Datenbank, die das Hinzufügen von Dateien und Dateigruppen nicht unterstützt. Die Tabellenpartitionierung wird in der Azure SQL-Datenbank unterstützt, indem Partitionen in der PRIMARY Dateigruppe erstellt werden. Für SQL Server und azure SQL Managed Instance können Sie je nach Dateigruppen- und Dateiverwaltungspraktiken eine vom Benutzer erstellte Dateigruppe angeben.

Im Beispiel wird die Erstellung einer partitionierten Tabelle in SQL Server Management Studio (SSMS) mithilfe von Transact-SQL ausgeführt und alle Partitionen der PRIMARY Dateigruppe zugewiesen. Beispiel:

  • Erstellt eine RANGE RIGHT-Partitionsfunktion mit myRangePF1 drei Begrenzungswerten mithilfe des Datentyps "datetime2 ". Drei Grenzwerte führen zu einer partitionierten Tabelle mit vier Partitionen.
  • Erstellt ein Partitionsschema namens myRangePS1 , das die ALL TO Syntax verwendet, um alle Partitionen in der myRangePF1 Partitionsfunktion der PRIMARY Dateigruppe zuzuweisen.
  • Erstellt eine Tabelle, die im myRangePS1 Partitionsschema benannt istPartitionTable, wobei eine Spalte angegeben wird, die als Partitionierungsspalte bezeichnet wirdcol1.
  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. In diesem Beispiel werden eine Partitionsfunktion und ein Partitionsschema erstellt. Eine neue Tabelle wird mit dem Partitionsschema erstellt, das als Speicherort angegeben wurde.

CREATE PARTITION FUNCTION myRangePF1 (datetime2(0))  
    AS RANGE RIGHT FOR VALUES ('2022-04-01', '2022-05-01', '2022-06-01') ;  
GO  

CREATE PARTITION SCHEME myRangePS1  
    AS PARTITION myRangePF1  
    ALL TO ('PRIMARY') ;  
GO  

CREATE TABLE dbo.PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10))  
    ON myRangePS1 (col1) ;  
GO

Erstellen einer partitionierten Tabelle für mehrere Dateigruppen mit Transact-SQL

Führen Sie die Schritte in diesem Abschnitt aus, um eine oder mehrere Dateigruppen, entsprechende Dateien und eine partitionierte Tabelle mit Transact-SQL in SSMS zu erstellen.

Sowohl SQL Server als auch azure SQL Managed Instance unterstützen das Erstellen von Dateigruppen und Dateien. Azure SQL Managed Instance konfiguriert automatisch den Pfad für alle hinzugefügten Datenbankdateien, sodass der ALTER DATABASE ADD FILE Befehl in der verwalteten Azure SQL-Instanz den FILENAME Parameter nicht zulässt. Die Azure SQL-Datenbank unterstützt das Erstellen partitionierter Tabellen nur in der PRIMARY Dateigruppe. Finden Sie Beispielcode für Azure SQL-Datenbank in "Erstellen einer partitionierten Tabelle in einer Dateigruppe mit Transact-SQL".

Führen Sie das folgende Beispiel für eine leere Datenbank aus. Beispiel:

  • Fügt einer Datenbank vier neue Dateigruppen hinzu.
  • Fügt jeder Dateigruppe eine Datei hinzu.
  • Erstellt eine RANGE RIGHT-Partitionsfunktion , die mit drei Begrenzungswerten aufgerufen myRangePF1 wird, die eine Tabelle in vier Partitionen partitionieren.
  • Erstellt ein Partitionsschema, das für myRangePS1 die vier neuen Dateigruppen gilt myRangePF1 .
  • Erstellt eine partitionierte Tabelle, die für die Partitionierung col1verwendet PartitionTable wirdmyRangePS1.
  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardsymbolleiste auf Neue Abfrage.

  3. In diesem Beispiel wird eine neue Datenbank erstellt und verwendet. Anschließend werden neue Dateigruppen, eine Partitionsfunktion und ein Partitionsschema erstellt. Eine neue Tabelle wird mit dem Partitionsschema erstellt, das als Speicherort angegeben wurde. Kopieren Sie das folgende Beispiel, und fügen Sie es in das Abfragefenster ein.

    Wenn Sie eine verwaltete Instanz verwenden, entfernen Sie den FILENAME Parameter und den zugeordneten Wert aus dem ALTER DATABASE ADD FILE Befehl. Die verwaltete Instanz bestimmt automatisch den Dateipfad für Sie.

    Wenn Sie eine SQL Server-Instanz verwenden, passen Sie den Wert für den Parameter an einen Speicherort an, der FILENAME für Ihre Instanz geeignet ist.

    Wenn Sie eine vorhandene Datenbank verwenden möchten, entfernen Sie den CREATE DATABASE Befehl, und ändern Sie die USE Anweisung auf den entsprechenden Datenbanknamen.

    SELECT Execute.

    CREATE DATABASE PartitionTest;
    GO
    
    USE PartitionTest;
    GO
    
    ALTER DATABASE PartitionTest  
    ADD FILEGROUP test1fg;  
    GO  
    ALTER DATABASE PartitionTest  
    ADD FILEGROUP test2fg;  
    GO  
    ALTER DATABASE PartitionTest  
    ADD FILEGROUP test3fg;  
    GO  
    ALTER DATABASE PartitionTest  
    ADD FILEGROUP test4fg;   
    
    ALTER DATABASE PartitionTest   
    ADD FILE   
    (  
        NAME = partitiontest1,  
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest1.ndf',  
        SIZE = 5MB,  
        FILEGROWTH = 5MB  
    )  
    TO FILEGROUP test1fg;  
    ALTER DATABASE PartitionTest   
    ADD FILE   
    (  
        NAME = partitiontest2,  
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest2.ndf',  
        SIZE = 5MB,  
        FILEGROWTH = 5MB  
    )  
    TO FILEGROUP test2fg;  
    GO  
    ALTER DATABASE PartitionTest   
    ADD FILE   
    (  
        NAME = partitiontest3,  
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest3.ndf',  
        SIZE = 5MB,  
        FILEGROWTH = 5MB  
    )  
    TO FILEGROUP test3fg;  
    GO  
    ALTER DATABASE PartitionTest   
    ADD FILE   
    (  
        NAME = partitiontest4,  
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest4.ndf',  
        SIZE = 5MB,  
        FILEGROWTH = 5MB  
    )  
    TO FILEGROUP test4fg;  
    GO  
    
    CREATE PARTITION FUNCTION myRangePF1 (datetime2(0))  
        AS RANGE RIGHT FOR VALUES ('2022-04-01', '2022-05-01', '2022-06-01') ;  
    GO  
    
    CREATE PARTITION SCHEME myRangePS1  
        AS PARTITION myRangePF1  
        TO (test1fg, test2fg, test3fg, test4fg) ;  
    GO  
    
    CREATE TABLE PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10))  
        ON myRangePS1 (col1) ;  
    GO  
    

Partitionieren einer Tabelle mit SSMS

Führen Sie die Schritte in diesem Abschnitt aus, um optional Dateigruppen und entsprechende Dateien zu erstellen, und erstellen Sie dann eine partitionierte Tabelle oder partitionieren Sie eine vorhandene Tabelle mithilfe des Assistenten zum Erstellen von Partitionen in SQL Server Management Studio (SSMS). Der Assistent zum Erstellen von Partitionen ist in SSMS für SQL Server und azure SQL Managed Instance verfügbar. Informationen zur Azure SQL-Datenbank finden Sie unter Erstellen einer partitionierten Tabelle in einer Dateigruppe mithilfe von Transact-SQL.

Erstellen neuer Dateigruppen (optional)

Wenn Sie Die partitionierte Tabelle auf einer oder mehreren neuen Dateigruppen platzieren möchten, führen Sie die Schritte in diesem Abschnitt aus. Sowohl SQL Server als auch azure SQL Managed Instance unterstützen das Erstellen von Dateigruppen und Dateien. Für azure SQL Managed Instance wird der Pfad für alle erstellten Dateien automatisch für Sie konfiguriert.

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Datenbank, in der Sie eine partitionierte Tabelle erstellen möchten und wählen Sie Eigenschaftenaus.

  2. Wählen Sie im Dialogfeld Datenbankeigenschaften -database_name unter Seite auswählendie Option Dateigruppenaus.

  3. Wählen Sie unter "Zeilen" die Option "Hinzufügen" aus. Geben Sie in der neuen Zeile den Dateigruppennamen ein.

    Warnung

    Wenn Sie mehrere Dateigruppen angeben, müssen Sie zusätzlich zu der Anzahl der für die Begrenzungswerte angegebenen Dateigruppen beim Erstellen von Partitionen stets über eine weitere Dateigruppe verfügen.

  4. Fahren Sie mit dem Hinzufügen von Zeilen fort, bis Sie alle Dateigruppen für die partitionierte Tabelle oder Tabellen erstellt haben.

  5. Klicken Sie auf OK.

  6. Wählen Sie unter Seite auswählendie Option Dateienaus.

  7. Wählen Sie unter "Zeilen" die Option "Hinzufügen" aus. Geben Sie in der neuen Zeile einen Dateinamen ein, und wählen Sie eine Dateigruppe aus.

  8. Fügen Sie weiter Zeilen hinzu, bis Sie mindestens eine Datei für jede Dateigruppe erstellt haben.

Erstellen einer partitionierten Tabelle

  1. Erweitern Sie optional den Ordner "Tabellen ", und erstellen Sie eine Tabelle wie gewohnt. Weitere Informationen finden Sie unter Erstellen von Tabellen (Datenbankmodul). Alternativ können Sie im nächsten Schritt eine vorhandene Tabelle angeben.

  2. Klicken Sie mit der rechten Maustaste auf die Tabelle, die Sie partitionieren möchten, zeigen Sie auf "Speicher", und wählen Sie dann "Partition erstellen" aus.

  3. Wählen Sie im Assistenten zum Erstellen von Partitionen auf der Seite "Partition erstellen" auf der Seite "Partition erstellen" die Option "Weiter" aus.

  4. Wählen Sie auf der Seite Partitionierungsspalte auswählen im Raster Verfügbare Partitionierungsspalten die Spalte aus, an der Sie die Tabelle partitionieren möchten. Im Raster Verfügbare Partitionierungsspalten werden nur Spalten mit Datentypen angezeigt, die zum Partitionieren von Daten verwendet werden können. Wenn Sie eine berechnete Spalte als Partitionierungsspalte auswählen, muss die Spalte als beibehaltene Spalte erstellt werden.

    Die Auswahlmöglichkeiten, die Ihnen für die Partitionierungsspalte und den Wertebereich zur Verfügung stehen, werden in erster Linie durch das Ausmaß bestimmt, in dem Ihre Daten auf logische Weise gruppiert werden können. So können Sie z. B. die Daten nach Monaten oder Quartalen in logische Gruppierungen aufteilen. Ob die logische Gruppierung für die Verwaltung der Tabellenpartitionen geeignet ist, hängt von den Abfragen ab, die Sie für die Daten ausführen möchten. Als Partitionierungsspalte sind alle Datentypen außer text, ntext, image, xml, timestamp, varchar(max), nvarchar(max), varbinary(max), Aliasdatentypen oder CLR-benutzerdefinierten Datentypen, zulässig.

    Die folgenden zusätzlichen Optionen sind auf dieser Seite verfügbar:

    Diese Tabelle der ausgewählten partitionierten Tabelle zuordnen
    Ermöglicht das Auswählen einer partitionierten Tabelle mit verwandten Daten, die über die Partitionierungsspalte mit einer anderen Tabelle verknüpft werden soll. Tabellen mit Partitionen, die über die Partitionierungsspalten verknüpft sind, können i. d. R. effizienter abgefragt werden.

    Nicht eindeutige Indizes und eindeutige Indizes mit indizierter Partitionsspalte am Speicher ausrichten
    Richtet alle Indizes der Tabelle, die mit dem gleichen Partitionsschema partitioniert sind, aneinander aus. Wenn eine Tabelle und deren Indizes ausgerichtet sind, können Sie Partitionen effektiver in und aus partitionierten Tabellen verschieben, da Ihre Daten auf die gleiche Weise partitioniert werden.

    Nachdem Sie die Partitionierungsspalte und andere Optionen ausgewählt haben, wählen Sie "Weiter" aus.

  5. Wählen Sie auf der Seite "Partitionsfunktion auswählen" unter "Partitionsfunktion auswählen" entweder "Neue Partitionsfunktion" oder "Vorhandene Partitionsfunktion" aus. Wenn Sie Neue Partitionsfunktionauswählen, geben Sie den Namen der Funktion ein. Wenn Sie Vorhandene Partitionsfunktionauswählen, wählen Sie in der Liste den Namen der Funktion aus, die Sie verwenden möchten. Die Option Vorhandene Partitionsfunktion ist nicht verfügbar, wenn die Datenbank keine anderen Partitionsfunktionen enthält.

    Klicken Sie auf Weiter, nachdem Sie diese Seite ausgefüllt haben.

  6. Wählen Sie auf der Seite "Partitionsschema auswählen" unter "Partitionsschema auswählen" entweder "Neues Partitionsschema" oder "Vorhandenes Partitionsschema" aus. Wenn Sie Neues Partitionsschemaauswählen, geben Sie den Namen des Schemas ein. Wenn Sie Vorhandenes Partitionsschemaauswählen, wählen Sie in der Liste den Namen des Schemas aus, die Sie verwenden möchten. Die Option Vorhandenes Partitionsschema ist nicht verfügbar, wenn die Datenbank keine anderen Partitionsschemas enthält.

    Klicken Sie auf Weiter, nachdem Sie diese Seite ausgefüllt haben.

  7. Wählen Sie auf der Seite "Partitionen der Zuordnung" unter "Bereich" entweder "Linke Grenze" oder "Rechte Grenze" aus. Left boundary specifies that the highest bounding value will be included within a partition. Die rechte Grenze gibt an, dass der niedrigste Begrenzungswert in jeder Partition enthalten ist. Erfahren Sie mehr über rechte und linke Bereiche in der Partitionsfunktion.

    Wenn Sie mehrere Grenzpunkte angeben, müssen Sie zusätzlich zu den Zeilen, die einer Dateigruppe Grenzwerte zuweisen, immer eine zusätzliche Zeile eingeben.

    Wählen Sie im Raster Wählen Sie Dateigruppen aus, und geben Sie Begrenzungswerte an unter Dateigruppedie Dateigruppe aus, in die Sie die Daten partitionieren möchten. Geben Sie unter Begrenzungden Begrenzungswert für jede Dateigruppe ein. Wenn Sie mehrere oder alle Partitionen derselben Dateigruppe zuweisen möchten, wählen Sie denselben Dateinamen für jede Zeile aus. Wenn Sie eine Dateigruppe für eine einzelne Zeile auswählen und der Begrenzungswert leer bleibt, ordnet die Partitionsfunktion die gesamte Tabelle oder den index mithilfe des Partitionsfunktionsnamens einer einzelnen Partition zu.

    Die folgenden zusätzlichen Optionen sind auf dieser Seite verfügbar:

    Begrenzungen festlegen...
    Öffnet das Dialogfeld Begrenzungswerte festlegen , um die Begrenzungswerte und Datumsbereiche für die Partitionen auszuwählen. Diese Option ist nur verfügbar, wenn Sie eine Partitionierungsspalte ausgewählt haben, die einen der folgenden Datentypen enthält: date, datetime, smalldatetime, datetime2oder datetimeoffset.

    Schätzungsspeicher
    Schätzt die Zeilenanzahl sowie den zum Speichern erforderlichen und verfügbaren Speicherplatz für jede für die Partitionen angegebene Dateigruppe. Diese Werte werden im Raster als schreibgeschützte Werte angezeigt.

    Das Dialogfeld Begrenzungswerte festlegen berücksichtigt die folgenden zusätzlichen Optionen:

    Startdatum
    Wählt das Anfangsdatum für die Bereichswerte der Partitionen aus.

    Enddatum
    Wählt das Enddatum für die Bereichswerte der Partitionen aus. Wenn Sie auf der Seite Partitionen zuordnen die Option Linke Begrenzung ausgewählt haben, ist dieses Datum der letzte Wert für alle Dateigruppen/Partition. Wenn Sie auf der Seite Partitionen zuordnen die Option Rechte Begrenzung wählen, ist dieses Datum der erste Wert in der vorletzten Dateigruppe.

    Datumsbereich
    Wählt die Datumsgranularität bzw. das Bereichswertinkrement für jede Partition aus.

    Klicken Sie auf Weiter, nachdem Sie diese Seite ausgefüllt haben.

  8. Geben Sie auf der Seite Ausgabeoption auswählen an, wie Sie die partitionierte Tabelle fertigstellen möchten. Wählen Sie Skript erstellen aus, um ein auf den vorherigen Seiten im Assistenten basierendes SQL-Skript zu erstellen. Wählen Sie Sofort ausführen aus, um die neue partitionierte Tabelle zu erstellen, nachdem Sie alle verbleibenden Seiten im Assistenten vervollständigt haben. Wählen Sie Zeitplan aus, um die neue partitionierte Tabelle zu einer vorher bestimmten Zeit für die Zukunft zu erstellen.

    Wenn Sie Skript erstellenauswählen, sind die folgenden Optionen unter Skriptoptionenverfügbar:

    Skript in Datei schreiben
    Generiert das Skript als SQL-Datei. Geben Sie in das Dialogfeld Dateiname einen Dateinamen und einen Speicherort ein, oder klicken Sie auf Durchsuchen, um das Dialogfeld Speicherort der Skriptdatei zu öffnen. Wählen Sie in Speichern unterUnicode-Text oder ANSI-Textaus.

    Skript in Zwischenablage schreiben
    Speichert das Skript in der Zwischenablage.

    Skript in Fenster "Neue Abfrage" schreiben
    Generiert das Skript in einem neuen Abfrage-Editor-Fenster. Dies ist die Standardauswahl.

    Wenn Sie Zeitplan auswählen, klicken Sie auf Zeitplan ändern.

    1. Geben Sie im Dialogfeld Neuer Auftragszeitplan im Feld Name den Namen des Auftragszeitplans ein.

    2. Wählen Sie in der Liste Zeitplantyp den Zeitplantyp aus:

      • Automatisch starten, wenn der SQL Server-Agent startet

      • Starten, wenn sich die CPUs im Leerlauf befinden

      • Wiederholt. Aktivieren Sie diese Option, wenn Ihre neu partitionierte Tabelle regelmäßig mit neuen Informationen aktualisiert wird.

      • Einmalige Ausführung. Dies ist die Standardauswahl.

    3. Aktivieren oder deaktivieren Sie das Kontrollkästchen Aktiviert , um den Zeitplan zu aktivieren oder zu deaktivieren.

    4. Wenn Sie Wiederholtauswählen:

      1. Geben Sie unter Häufigkeitin der Liste Tritt auf die Häufigkeit des Vorkommens an:

        • Wenn Sie im Dialogfeld Wiederholen alledie Option Täglich auswählen, geben Sie ein, wie oft der Auftragszeitplan wiederholt wird (in Tagen).

        • Wenn Sie im Dialogfeld Wiederholen alledie Option Wöchentlich auswählen, geben Sie ein, wie oft der Auftragszeitplan wiederholt wird (in Wochen). Wählen Sie den Tag oder die Tage der Woche aus, an denen der Auftragszeitplan ausgeführt wird.

        • Wenn Sie Monatlichauswählen, wählen Sie Tag oder Amaus.

          • Wenn Sie Tagauswählen, geben Sie das Datum ein, an dem der Auftragszeitplan ausgeführt wird, und wie oft der Auftragszeitplan wiederholt werden soll (in Monaten). Wenn Sie beispielsweise möchten, dass der Auftragszeitplan jeden zweiten Monat am 15. ausgeführt wird, wählen Sie Tag aus, und geben Sie in das erste Feld „15“ und in das zweite Feld „2“ ein. Die größte im zweiten Feld zulässige Zahl ist "99".

          • Wenn Sie Amauswählen, geben Sie den spezifischen Tag der Woche im Monat an, an dem der Auftragszeitplan ausgeführt wird, und wie oft der Auftragszeitplan wiederholt werden soll (in Monaten). Wenn Sie beispielsweise möchten, dass der Auftragszeitplan jeden zweiten Monat am letzten Wochentag ausgeführt werden soll, wählen Sie Tag und in der ersten Liste Letzter und in der zweiten Liste Wochentag aus, und geben Sie in das letzte Feld „2“ ein. Sie können auch ersten, zweiten, drittenoder viertensowie bestimmte Wochentage z. B. Sonntag oder Mittwoch) aus den ersten beiden Listen auswählen. Die größte im letzten Feld zulässige Zahl ist "99".

      2. Geben Sie unter Häufigkeit pro Tagan, wie oft der Auftragszeitplan an dem Tag wiederholt werden soll, an dem der Auftragszeitplan ausgeführt wird:

        • Wenn Sie Einmalig umauswählen, geben Sie im Feld Einmalig um die spezifische Tageszeit ein, zu der der Auftragszeitplan ausgeführt werden soll. Geben Sie die Stunde, Minute und Sekunde des Tages sowie AM oder PM ein.

        • Wenn Sie Alleauswählen, geben Sie an, wie oft der Auftragszeitplan an dem unter Häufigkeitausgewählten Tag ausgeführt werden soll. Wenn Sie z.B. möchten, dass der Auftragszeitplan am Tag seiner Ausführung alle 2 Stunden wiederholt wird, wählen Sie Alle aus, geben in das erste Feld „2“ ein und wählen dann in der Liste Stunde(n) aus. Aus dieser Liste können Sie auch Minute(n) und Sekunde(n) auswählen. Die größte im ersten Feld zulässige Zahl ist "100".

          Geben Sie im Feld Start die Zeit ein, zu der die Ausführung des Auftragszeitplans beginnen soll. Geben Sie im Feld Ende die Zeit ein, zu der die Ausführung des Auftragszeitplans enden soll. Geben Sie die Stunde, Minute und Sekunde des Tages sowie AM oder PM ein.

      3. Geben Sie unter Dauerin Startdatumdas Datum ein, an dem die Ausführung des Auftragszeitplans beginnen soll. Wählen Sie Enddatum oder Kein Enddatum aus, um anzugeben, wann die Ausführung des Auftragszeitplans beendet werden soll. Wenn Sie Enddatumauswählen, geben Sie das Datum ein, an dem die Ausführung des Auftragszeitplans beendet werden soll.

    5. Wenn Sie Einmalauswählen, geben Sie unter Einmaligin das Feld Datum das Datum ein, an dem der Auftragszeitplan ausgeführt werden soll. Geben Sie im Feld Uhrzeit die Zeit ein, zu der der Auftragszeitplan ausgeführt werden soll. Geben Sie die Stunde, Minute und Sekunde des Tages sowie AM oder PM ein.

    6. Überprüfen Sie unter Zusammenfassungim Feld Beschreibung, ob alle Auftragszeitplaneinstellungen richtig sind.

    7. Klicken Sie auf OK.

    Klicken Sie auf Weiter, nachdem Sie diese Seite ausgefüllt haben.

  9. Erweitern Sie auf der Seite Zusammenfassung der Überprüfung unter Überprüfen Sie Ihre Auswahlalle verfügbaren Optionen, um zu überprüfen, ob alle Partitionseinstellungen richtig sind. Klicken Sie auf Fertig stellen, wenn alle Einstellungen richtig sind.

  10. Auf der Seite Status des Assistenten zum Erstellen von Partitionen können Sie Statusinformationen zu den Aktionen des Assistenten zum Erstellen von Partitionen überwachen. Je nach den im Assistenten ausgewählten Optionen enthält diese Seite eine oder mehrere Aktionen. Im oberen Feld werden der Gesamtstatus des Assistenten und die Anzahl der empfangenen Status-, Fehler- und Warnmeldungen angezeigt.

    Die folgenden Optionen sind auf der Seite Status des Assistenten zum Erstellen von Partitionen verfügbar:

    Details
    Stellt für jede vom Assistenten ausgeführte Aktion Informationen zur Aktion, zum Status und zu den zurückgegebenen Meldungen bereit.

    Aktion
    Gibt den Typ und den Namen jeder Aktion an.

    Status
    Gibt an, ob für die Aktion des Assistenten insgesamt der Wert Erfolg oder der Wert Fehlerzurückgegeben wurde.

    Meldung
    Stellt alle vom Prozess zurückgegebenen Fehler- oder Warnmeldungen bereit.

    Report
    Erstellt einen Bericht mit den Ergebnissen des Assistenten zum Erstellen von Partitionen. Die Optionen sind Bericht anzeigen, Bericht in Datei speichern, Bericht in Zwischenablage kopierenund Bericht als E-Mail senden.

    Bericht anzeigen
    Öffnet das Dialogfeld Bericht anzeigen , das einen Textbericht zum Fortschritt des Assistenten zum Erstellen von Partitionen enthält.

    Bericht in Datei speichern
    Öffnet das Dialogfeld Bericht speichern unter .

    Bericht in Zwischenablage kopieren
    Kopiert die Ergebnisse aus dem Statusbericht des Assistenten in die Zwischenablage.

    Bericht als E-Mail senden
    Kopiert die Ergebnisse aus dem Statusbericht des Assistenten in eine E-Mail.

    Klicken Sie auf Schließen, wenn Sie fertig sind.

Der Assistent zum Erstellen von Partitionen erstellt die Partitionsfunktion und das Schema und wendet dann die Partitionierung auf die angegebene Tabelle an. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Tabelle und wählen Sie Eigenschaftenaus, um die Tabellenpartitionierung zu überprüfen. Wählen Sie die Seite "Speicher " aus. Auf der Seite werden Informationen, beispielsweise der Name der Partitionsfunktion und das -schema sowie die Anzahl an Partitionen, angezeigt.

Abfragen von Metadaten von partitionierten Tabellen und Indizes

Sie können Metadaten abfragen, um festzustellen, ob eine Tabelle partitioniert ist, die Begrenzungspunkte für eine partitionierte Tabelle, die Partitionierungsspalte für eine partitionierte Tabelle, die Anzahl der Zeilen in jeder Partition und ob die Datenkomprimierung auf Partitionen implementiert wurde.

Bestimmen, ob eine Tabelle partitioniert ist

Die folgende Abfrage gibt eine oder mehrere Zeilen zurück, wenn die Tabelle PartitionTable partitioniert ist oder wenn nicht gruppierte Indizes in der Tabelle partitioniert werden. Wenn die Tabelle nicht partitioniert ist und keine nicht gruppierten Indizes in der Tabelle partitioniert werden, werden keine Zeilen zurückgegeben.

SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, *   
FROM sys.tables AS t   
JOIN sys.indexes AS i   
    ON t.[object_id] = i.[object_id]   
JOIN sys.partition_schemes ps   
    ON i.data_space_id = ps.data_space_id   
WHERE t.name = 'PartitionTable';   
GO  

Bestimmen der Grenzwerte für eine partitionierte Tabelle

Die folgende Abfrage gibt die Begrenzungswerte für jede Partition in der PartitionTable -Tabelle zurück.

Die Abfrage verwendet die type Spalte in sys.indexes , um nur Informationen für den gruppierten Index der Tabelle oder für die Basistabelle zurückzugeben, wenn die Tabelle ein Heap ist. Um partitionierte, nicht gruppierte Indizes in die Abfrageergebnisse einzuschließen, entfernen oder kommentieren AND i.type <= 1 Sie sie aus der Abfrage.

SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, i.name AS IndexName, 
    p.partition_number, p.partition_id, i.data_space_id, f.function_id, f.type_desc, 
    r.boundary_id, r.value AS BoundaryValue   
FROM sys.tables AS t  
JOIN sys.indexes AS i  
    ON t.object_id = i.object_id  
JOIN sys.partitions AS p  
    ON i.object_id = p.object_id AND i.index_id = p.index_id   
JOIN  sys.partition_schemes AS s   
    ON i.data_space_id = s.data_space_id  
JOIN sys.partition_functions AS f   
    ON s.function_id = f.function_id  
LEFT JOIN sys.partition_range_values AS r   
    ON f.function_id = r.function_id and r.boundary_id = p.partition_number  
WHERE 
    t.name = 'PartitionTable' 
    AND i.type <= 1  
ORDER BY SchemaName, t.name, i.name, p.partition_number;  

Partitionsspalte für eine partitionierte Tabelle bestimmen

Die folgende Abfrage gibt den Namen der Partitionierungsspalte für die Tabelle PartitionTable zurück.

Die Abfrage verwendet die type Spalte in sys.indexes , um nur Informationen für den gruppierten Index der Tabelle oder für die Basistabelle zurückzugeben, wenn die Tabelle ein Heap ist. Um partitionierte, nicht gruppierte Indizes in die Abfrageergebnisse einzuschließen, entfernen oder kommentieren AND i.type <= 1 Sie sie aus der Abfrage.


SELECT   
    t.[object_id] AS ObjectID
    , SCHEMA_NAME(t.schema_id) AS SchemaName
    , t.name AS TableName   
    , ic.column_id AS PartitioningColumnID   
    , c.name AS PartitioningColumnName
    , i.name as IndexName
FROM sys.tables AS t   
JOIN sys.indexes AS i   
    ON t.[object_id] = i.[object_id]   
    AND i.[type] <= 1 -- clustered index or a heap   
JOIN sys.partition_schemes AS ps   
    ON ps.data_space_id = i.data_space_id   
JOIN sys.index_columns AS ic   
    ON ic.[object_id] = i.[object_id]   
    AND ic.index_id = i.index_id   
    AND ic.partition_ordinal >= 1 -- because 0 = non-partitioning column   
JOIN sys.columns AS c   
    ON t.[object_id] = c.[object_id]   
    AND ic.column_id = c.column_id   
WHERE t.name = 'PartitionTable';   
GO  

Ermitteln der Zeilen, die den möglichen Wertebereich in jeder Partition beschreiben

Die folgende Abfrage gibt die Zeilen nach Partition für die Tabelle PartitionTableund eine Beschreibung der "Vergleichsoperatoren" für die verwendete Partitionsfunktion zurück. Das Original der Abfrage wurde von Kalen Delaney bereitgestellt.

Die Abfrage verwendet die type Spalte in sys.indexes , um nur Informationen für den gruppierten Index der Tabelle oder für die Basistabelle zurückzugeben, wenn die Tabelle ein Heap ist. Um partitionierte, nicht gruppierte Indizes in die Abfrageergebnisse einzuschließen, entfernen oder kommentieren AND i.type <= 1 Sie sie aus der Abfrage.

SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, i.name AS IndexName, 
    p.partition_number AS PartitionNumber, f.name AS PartitionFunctionName, p.rows AS Rows, rv.value AS BoundaryValue, 
CASE WHEN ISNULL(rv.value, rv2.value) IS NULL THEN 'N/A' 
ELSE
    CASE WHEN f.boundary_value_on_right = 0 AND rv2.value IS NULL THEN '>=' 
        WHEN f.boundary_value_on_right = 0 THEN '>' 
        ELSE '>=' 
    END + ' ' + ISNULL(CONVERT(varchar(64), rv2.value), 'Min Value') + ' ' + 
        CASE f.boundary_value_on_right WHEN 1 THEN 'and <' 
                ELSE 'and <=' END 
        + ' ' + ISNULL(CONVERT(varchar(64), rv.value), 'Max Value') 
END AS TextComparison
FROM sys.tables AS t  
JOIN sys.indexes AS i  
    ON t.object_id = i.object_id  
JOIN sys.partitions AS p  
    ON i.object_id = p.object_id AND i.index_id = p.index_id   
JOIN  sys.partition_schemes AS s   
    ON i.data_space_id = s.data_space_id  
JOIN sys.partition_functions AS f   
    ON s.function_id = f.function_id  
LEFT JOIN sys.partition_range_values AS r   
    ON f.function_id = r.function_id and r.boundary_id = p.partition_number  
LEFT JOIN sys.partition_range_values AS rv
    ON f.function_id = rv.function_id
    AND p.partition_number = rv.boundary_id     
LEFT JOIN sys.partition_range_values AS rv2
    ON f.function_id = rv2.function_id
    AND p.partition_number - 1= rv2.boundary_id
WHERE 
    t.name = 'PartitionTable'
    AND i.type <= 1 
ORDER BY t.name, p.partition_number;

In TextComparison der Spalte wird der mögliche Wertebereich in jeder Partition basierend auf der Definition der Partitionsfunktion beschrieben. Hier ist eine Ansicht der Beispielergebnisse aus der Abfrage:

SchemaName TableName IndexName PartitionNumber PartitionFunctionName rows Grenzwert TextComparison
dbo PartitionTable PK_PartitionTable 1 PFTest 0 2022-03-01 00:00:00.000 >= Min Wert und < Mar 1 2022 12:00AM
dbo PartitionTable PK_PartitionTable 2 PFTest 2 2022-04-01 00:00:00.000 >= 1. März 2022 12:00 Uhr und < 1. April 2022 12:00 Uhr
dbo PartitionTable PK_PartitionTable 3 PFTest 1 2022-05-01 00:00:00.000 >= 1. April 2022 12:00 Uhr und < 1. Mai 2022 12:00 Uhr
dbo PartitionTable PK_PartitionTable 4 PFTest 0 2022-06-01 00:00:00.000 >= 1. Mai 2022 12:00 Uhr und < 1. Juni 2022 12:00 Uhr
dbo PartitionTable PK_PartitionTable 5 PFTest 1 2022-07-01 00:00:00.000 >= 1. Juni 2022 12:00 Uhr und < 1. Juli 2022 12:00 Uhr
dbo PartitionTable PK_PartitionTable 6 PFTest 0 NULL >= 1. Juli 2022 12:00 Uhr und < Max. Wert

Begrenzungen

Erfahren Sie mehr über Einschränkungen sowie Leistungsüberlegungen für die Partitionierung in Einschränkungen

Nächste Schritte

Weitere Informationen zu verwandten Konzepten finden Sie in den folgenden Artikeln: