Erstellen partitionierter Tabellen und Indizes
Sie können in SQL Server 2012 mit SQL Server Management Studio oder Transact-SQL eine partitionierte Tabelle oder einen Index erstellen. Die Daten in partitionierten Tabellen und Indizes werden horizontal in Einheiten aufgeteilt, die über mehrere Dateigruppen in einer Datenbank verteilt 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 vier Teilen:
Erstellen Sie eine Dateigruppe oder Dateigruppen und entsprechende Dateien, die die vom Partitionsschema angegebenen Partitionen enthalten.
Erstellen Sie eine Partitionsfunktion, die die Zeilen einer Tabelle oder eines Indexes Partitionen zuordnet. Dies erfolgt auf Grundlage der Werte einer angegebenen Spalte.
Erstellen Sie ein Partitionsschema, das die Partitionen einer partitionierten Tabelle oder eines partitionierten Indexes den neuen Dateigruppen zuordnet.
Erstellen oder ändern Sie eine Tabelle oder einen Index, und geben Sie das Partitionsschema als Speicherort an.
In diesem Thema
Vorbereitungen:
Einschränkungen
Sicherheit
Erstellen einer partitionierten Tabelle oder eines partitionierten Indexes mit:
SQL Server Management Studio
Transact-SQL
Vorbereitungen
Einschränkungen
Der Bereich einer Partitionsfunktion und eines Schemas ist auf die Datenbank beschränkt, in der er erstellt wurde. Innerhalb der Datenbank befinden sich Partitionsfunktionen in einem von anderen Funktionen abgetrennten Namespace.
Wenn beliebige Zeilen innerhalb einer Partitionsfunktion Partitionierungsspalten mit NULL-Werten aufweisen, werden diese Zeilen der am weitesten links stehenden Partition zugeordnet. Jedoch wenn NULL als Begrenzungswert sowie RIGHT angegeben werden, bleibt die am weitesten links stehende Partition leer, und die NULL-Werte werden in der zweiten Partition eingefügt.
Sicherheit
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.
[Nach oben]
Verwenden von SQL Server Management Studio
Führen Sie die Schritte in dieser Prozedur aus, um mindestens eine Dateigruppe, entsprechende Dateien und eine Tabelle zu erstellen. Sie versehen diese Objekte in der nächsten Prozedur mit Verweisen, wenn Sie die partitionierte Tabelle erstellen.
So erstellen Sie neue Dateigruppen für eine partitionierte Tabelle
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 Eigenschaften aus.
Wählen Sie im Dialogfeld Datenbankeigenschaften – database_name unter Seite auswählen Dateigruppen aus.
Klicken Sie unter Zeilen auf Hinzufügen. Geben Sie in der neuen Zeile den Dateigruppennamen ein.
Vorsicht Zusätzlich zu der Anzahl der für die Begrenzungswerte angegebenen Dateigruppen müssen Sie beim Erstellen von Partitionen stets über eine weitere Dateigruppe verfügen.
Fügen Sie weiterhin Zeilen hinzu, bis Sie alle Dateigruppen für die partitionierte Tabelle erstellt haben.
Klicken Sie auf OK.
Wählen Sie unter Seite auswählen die Option Dateien aus.
Klicken Sie unter Zeilen auf Hinzufügen. Geben Sie in der neuen Zeile einen Dateinamen ein, und wählen Sie eine Dateigruppe aus.
Fügen Sie weiter Zeilen hinzu, bis Sie mindestens eine Datei für jede Dateigruppe erstellt haben.
Erweitern Sie den Ordner Tabellen, und erstellen Sie eine Tabelle. Weitere Informationen finden Sie unter Erstellen von Tabellen (Datenbankmodul). Alternativ können Sie in der nächsten Prozedur eine vorhandene Tabelle angeben.
So erstellen Sie eine partitionierte Tabelle
Klicken Sie mit der rechten Maustaste auf die Tabelle, die Sie partitionieren möchten, zeigen Sie auf Speicher, und klicken Sie dann auf Partition erstellen….
Klicken Sie im Assistent zum Erstellen von Partitionen auf der Seite Willkommen beim Assistenten zum Erstellen von Partitionen auf Weiter.
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 persistente berechnete Spalte gekennzeichnet sein.
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. Alle Datentypen sind für die Verwendung als Partitionierungsspalten gültig, außer text, ntext, image, xml, timestamp, varchar(max), nvarchar(max), varbinary(max), Aliasdatentypen oder benutzerdefinierte CLR-Datentypen.
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 ihre Indizes aneinander ausgerichtet sind, können Sie Partitionen effektiver in und aus partitionierten Tabellen verschieben, da die Daten mit dem gleichen Algorithmus partitioniert sind.
Nach der Auswahl der Partitionierungsspalte und beliebiger anderer Optionen klicken Sie auf Weiter.
Klicken Sie auf der Seite Partitionsfunktion auswählen unter Partitionsfunktion auswählen auf Neue Partitionsfunktion oder Vorhandene Partitionsfunktion. Wenn Sie Neue Partitionsfunktion auswählen, geben Sie den Namen der Funktion ein. Wenn Sie Vorhandene Partitionsfunktion auswä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.
Nach Fertigstellen dieser Seite klicken Sie auf Weiter.
Klicken Sie auf der Seite Partitionsschema auswählen unter Partitionsschema auswählen auf Neues Partitionsschema oder Vorhandenes Partitionsschema. Wenn Sie Neues Partitionsschema auswählen, geben Sie den Namen des Schemas ein. Wenn Sie Vorhandenes Partitionsschema auswä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.
Nach Fertigstellen dieser Seite klicken Sie auf Weiter.
Wählen Sie auf der Seite Partitionen zuordnen unter Bereich entweder Linke Begrenzung oder Rechte Begrenzung aus, um anzugeben, ob der höchste oder niedrigste umgebende Wert in jeder Dateigruppe enthalten sein soll, die Sie erstellen. Zusätzlich zu der Anzahl der für die Begrenzungswerte angegebenen Dateigruppen müssen Sie beim Erstellen von Partitionen stets eine weitere Dateigruppe eingeben.
Wählen Sie im Raster Wählen Sie Dateigruppen aus, und geben Sie Begrenzungswerte an unter Dateigruppe die Dateigruppe aus, in die Sie die Daten partitionieren möchten. Geben Sie unter Begrenzung den Begrenzungswert für jede Dateigruppe ein. Wenn der Begrenzungswert leer bleibt, ordnet die Partitionsfunktion die gesamte Tabelle oder den gesamten Index mithilfe eines einzigen Partitionsfunktionsnamens 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, datetime2 oder 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.
Nach Fertigstellen dieser Seite klicken Sie auf Weiter.
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 erstellen auswählen, sind die folgenden Optionen unter Skriptoptionen verfü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 unter Unicode-Text oder ANSI-Text aus.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.
Geben Sie im Dialogfeld Neue Feinterminierung im Feld Name den Namen der Feinterminierung ein.
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 die neue partitionierte Tabellen regelmäßig mit neuen Informationen aktualisiert wird.
Einmalige Ausführung. Dies ist die Standardauswahl.
Aktivieren oder deaktivieren Sie das Kontrollkästchen Aktiviert, um den Zeitplan zu aktivieren oder zu deaktivieren.
Wenn Sie Wiederholt auswählen:
Geben Sie unter Häufigkeit in der Liste Tritt auf die Häufigkeit des Vorkommens an:
Wenn Sie im Dialogfeld Wiederholen alle Täglich auswählen, geben Sie ein, wie oft der Auftragszeitraum wiederholt wird (in Tagen).
Wenn Sie im Dialogfeld Wiederholen alle Wöchentlich auswählen, geben Sie ein, wie oft der Auftragszeitraum wiederholt wird (in Wochen). Wählen Sie den Tag oder die Tage der Woche aus, an denen die Feinterminierung ausgeführt wird.
Wenn Sie Monatlich auswählen, wählen Sie Tag oder Der/Die/Das aus.
Wenn Sie Tag auswählen, geben Sie das Datum ein, an dem die Feinterminierung ausgeführt und wie oft die Feinterminierung wiederholt werden soll (in Monaten). Falls Sie beispielsweise möchten, dass die Feinterminierung in jedem anderen Monat am 15. Tag des Monats ausgeführt wird, wählen Sie Tag aus, und geben Sie in das erste Feld "15" und in das zweite Feld "2" ein. Beachten Sie, dass die größte im zweiten Feld zugelassene Zahl "99" ist.
Wenn Sie Der/Die/Das auswählen, geben Sie den spezifischen Tag der Woche im Monat an, an dem die Feinterminierung ausgeführt wird und wie oft die Feinterminierung wiederholt werden soll (in Monaten). Falls Sie beispielsweise möchten, dass die Feinterminierung in jedem anderen Monat am letzten Wochentag des Monats ausgeführt werden soll, wählen Sie in der ersten Liste Tag und Letzter und in der zweiten Liste Wochentag aus, und geben Sie in das letzte Dialogfeld "2" ein. Sie können auch erster, zweiter, dritter oder vierter sowie bestimmte Wochentage (z. B.: Sonntag oder Mittwoch) aus den ersten zwei Listen auswählen. Beachten Sie, dass die größte im letzten Feld zugelassene Zahl "99" ist.
Geben Sie unter Häufigkeit pro Tag an, wie oft die Feinterminierung an dem Tag wiederholt werden soll, an dem die Feinterminierung ausgeführt wird:
Wenn Sie Einmalig um auswählen, geben Sie im Dialogfeld Einmalig um die spezifische Tageszeit aus, zu der der Auftragszeitraum ausgeführt werden soll. Geben Sie die Stunde, Minute und Sekunde des Tages sowie AM oder PM ein.
Wenn Sie Alle auswählen, geben Sie unter Häufigkeit an, wie oft die Feinterminierung am ausgewählten Tag ausgeführt werden soll. Wenn Sie z. B. möchten, dass die Feinterminierung 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 in der Liste Stunde(n) aus. Aus dieser Liste können Sie auch Minute(n) und Sekunde(n) auswählen. Beachten Sie, dass die größte im ersten Feld zugelassene Zahl "100" ist.
Geben Sie im Feld Start die Zeit ein, zu der die Ausführung der Feinterminierung beginnen soll. Geben Sie im Feld Ende die Zeit ein, zu der die Ausführung der Feinterminierung enden soll. Geben Sie die Stunde, Minute und Sekunde des Tages sowie AM oder PM ein.
Geben Sie unter Dauer in Startdatum das Datum ein, an dem die Ausführung der Feinterminierung beginnen soll. Wählen Sie Enddatum oder Kein Enddatum aus, um anzugeben, wann die Ausführung der Feinterminierung beendet werden soll. Wenn Sie Enddatum auswählen, geben Sie das Datum ein, an dem die Ausführung der Feinterminierung beendet werden soll.
Wenn Sie Einmal auswählen, geben Sie unter Einmalig in das Feld Datum das Datum ein, an dem die Feinterminierung ausgeführt werden soll. Geben Sie im Feld Uhrzeit die Zeit ein, zu die Feinterminierung ausgeführt werden soll. Geben Sie die Stunde, Minute und Sekunde des Tages sowie AM oder PM ein.
Überprüfen Sie unter Zusammenfassung im Feld Beschreibung, ob alle Feinterminierungseinstellungen richtig sind.
Klicken Sie auf OK.
Nach Fertigstellen dieser Seite klicken Sie auf Weiter.
Erweitern Sie auf der Seite Zusammenfassung der Überprüfung unter Überprüfen Sie Ihre Auswahl alle verfügbaren Optionen, um zu überprüfen, ob alle Partitionseinstellungen richtig sind. Klicken Sie auf Fertig stellen, wenn alle Einstellungen richtig sind.
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 Fehler zurückgegeben wurde.Meldung
Stellt alle vom Prozess zurückgegebenen Fehler- oder Warnmeldungen bereit.Bericht
Erstellet einen Bericht mit den Ergebnissen des Assistenten zum Erstellen von Partitionen. Die Optionen sind Bericht anzeigen, Bericht in Datei speichern, Bericht in Zwischenablage kopieren und Bericht als E-Mail senden.Bericht anzeigen
Öffnet das Dialogfeld Bericht anzeigen, das einen Textbericht zum Status 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.
Vom Assistenten zum Erstellen von Partitionen werden die Partitionsfunktion und das -schema erstellt, und anschließend wird die Partitionierung auf die angegebene Tabelle angewendet. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Tabelle und wählen Sie Eigenschaften aus, um die Tabellenpartitionierung zu überprüfen. Klicken Sie auf die Seite Speicherung. Auf der Seite werden Informationen, beispielsweise der Name der Partitionsfunktion und das -schema sowie die Anzahl an Partitionen, angezeigt.
[Nach oben]
Verwenden von Transact-SQL
So erstellen Sie eine partitionierte Tabelle
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Database Engine (Datenbankmodul)-Instanz her.
Klicken Sie auf der Standardleiste auf Neue Abfrage.
Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen. Im Beispiel werden neue Dateigruppen, eine Partitionsfunktion und ein Partitionsschema erstellt. Eine neue Tabelle wird mit dem Partitionsschema erstellt, das als Speicherort angegeben wurde.
USE AdventureWorks2012; GO -- Adds four new filegroups to the AdventureWorks2012 database ALTER DATABASE AdventureWorks2012 ADD FILEGROUP test1fg; GO ALTER DATABASE AdventureWorks2012 ADD FILEGROUP test2fg; GO ALTER DATABASE AdventureWorks2012 ADD FILEGROUP test3fg; GO ALTER DATABASE AdventureWorks2012 ADD FILEGROUP test4fg; -- Adds one file for each filegroup. ALTER DATABASE AdventureWorks2012 ADD FILE ( NAME = test1dat1, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL110.MSSQLSERVER\MSSQL\DATA\t1dat1.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ) TO FILEGROUP test1fg; ALTER DATABASE AdventureWorks2012 ADD FILE ( NAME = test2dat2, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL110.MSSQLSERVER\MSSQL\DATA\t2dat2.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ) TO FILEGROUP test2fg; GO ALTER DATABASE AdventureWorks2012 ADD FILE ( NAME = test3dat3, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL110.MSSQLSERVER\MSSQL\DATA\t3dat3.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ) TO FILEGROUP test3fg; GO ALTER DATABASE AdventureWorks2012 ADD FILE ( NAME = test4dat4, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL110.MSSQLSERVER\MSSQL\DATA\t4dat4.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ) TO FILEGROUP test4fg; GO -- Creates a partition function called myRangePF1 that will partition a table into four partitions CREATE PARTITION FUNCTION myRangePF1 (int) AS RANGE LEFT FOR VALUES (1, 100, 1000) ; GO -- Creates a partition scheme called myRangePS1 that applies myRangePF1 to the four filegroups created above CREATE PARTITION SCHEME myRangePS1 AS PARTITION myRangePF1 TO (test1fg, test2fg, test3fg, test4fg) ; GO -- Creates a partitioned table called PartitionTable that uses myRangePS1 to partition col1 CREATE TABLE PartitionTable (col1 int PRIMARY KEY, col2 char(10)) ON myRangePS1 (col1) ; GO
So bestimmen Sie, ob eine Tabelle partitioniert ist
Die folgende Abfrage gibt mindestens eine Zeile zurück, wenn die PartitionTable-Tabelle partitioniert ist. Wenn die Tabelle nicht partitioniert ist, werden keine Zeilen zurückgegeben.
SELECT * FROM sys.tables AS t JOIN sys.indexes AS i ON t.[object_id] = i.[object_id] AND i.[type] IN (0,1) JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id WHERE t.name = 'PartitionTable'; GO
Sie definieren Sie Begrenzungswerte für eine partitionierte Tabelle
Die folgende Abfrage gibt die Begrenzungswerte für jede Partition in der PartitionTable-Tabelle zurück.
SELECT 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 p.partition_number;
So definieren Sie die Partitionsspalte für eine partitionierte Tabelle
Die folgende Abfrage gibt den Namen der Partitionierungsspalte für die Tabelle zurück. PartitionTable.
SELECT t.[object_id] AS ObjectID , t.name AS TableName , ic.column_id AS PartitioningColumnID , c.name AS PartitioningColumnName 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
Weitere Informationen finden Sie unter folgenden Themen:
[Nach oben]