Gepartitioneerde tabellen en indexen maken
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
U kunt een gepartitioneerde tabel of index maken in SQL Server, Azure SQL Database en Azure SQL Managed Instance met behulp van SQL Server Management Studio of Transact-SQL. De gegevens in gepartitioneerde tabellen en indexen worden horizontaal onderverdeeld in eenheden die kunnen worden verdeeld over meer dan één bestandsgroep in een database of die in één bestandsgroep kunnen worden opgeslagen. Partitionering kan grote tabellen en indexen beter beheersbaar en schaalbaar maken.
Het maken van een gepartitioneerde tabel of index vindt meestal plaats in drie of vier delen:
U kunt eventueel een bestandsgroep maken of bestandsgroepen en bijbehorende gegevensbestanden die de partities bevatten die zijn opgegeven door het partitieschema. De belangrijkste reden om partities op meerdere bestandsgroepen te plaatsen, is ervoor te zorgen dat u onafhankelijk back-up- en herstelbewerkingen kunt uitvoeren op bestandsgroepen. Als dit niet vereist is, kunt u ervoor kiezen om alle partities toe te wijzen aan één bestandsgroep, met behulp van een bestaande bestandsgroep, zoals
PRIMARY
of een nieuwe bestandsgroep met gerelateerde gegevensbestanden. In bijna alle scenario's bereikt u alle voordelen van partitionering ongeacht of u meerdere bestandsgroepen gebruikt.Maak een partitiefunctie waarmee de rijen van een tabel of index worden toegewezen aan partities op basis van de waarden van een opgegeven kolom. U kunt één partitiefunctie gebruiken om meerdere objecten te partitioneren.
Maak een partitieschema waarmee de partities van een gepartitioneerde tabel of index worden toegewezen aan één bestandsgroep of aan meerdere bestandsgroepen. U kunt één partitieschema gebruiken om meerdere objecten te partitioneren.
Maak of wijzig een tabel of index en geef het partitieschema op als de opslaglocatie, samen met de kolom die als de partitioneringskolom fungeert.
Notitie
Partitionering wordt volledig ondersteund in Azure SQL Database. Omdat alleen de PRIMARY
bestandsgroep wordt ondersteund in Azure SQL Database, moeten alle partities op de PRIMARY
-bestandsgroep worden geplaatst.
Tabelpartitionering is ook beschikbaar in toegewezen SQL-pools in Azure Synapse Analytics, met enkele syntaxisverschillen. Meer informatie vindt u in Partitioneringstabellen in toegewezen SQL-pool.
Machtigingen
Voor het maken van een gepartitioneerde tabel is de machtiging CREATE TABLE vereist in de database en de machtiging ALTER voor het schema waarin de tabel wordt gemaakt. Voor het maken van een gepartitioneerde index is ALTER-machtiging vereist voor de tabel of weergave waarin de index wordt gemaakt. Voor het maken van een gepartitioneerde tabel of index zijn een van de volgende extra machtigingen vereist:
ELKE DATASPACE-machtiging WIJZIGEN. Deze machtiging is standaard ingesteld op leden van de sysadmin vaste serverfunctie en de db_owner en db_ddladmin vaste databaserollen.
Control- of ALTER-machtiging voor de database waarin de partitiefunctie en het partitieschema worden gemaakt.
CONTROL SERVER ofwel ALTER ANY DATABASE-machtiging op de server waarop de database zich bevindt waarin de partitiefunctie en het partitieschema worden gemaakt.
Een gepartitioneerde tabel in één bestandsgroep maken met behulp van Transact-SQL
Als u niet onafhankelijk back-up- en herstelbewerkingen voor bestandsgroepen hoeft uit te voeren, vereenvoudigt het partitioneren van een tabel met één bestandsgroep het beheer van de gepartitioneerde tabel in de loop van de tijd.
Dit voorbeeld is geschikt voor Azure SQL Database, dat geen ondersteuning biedt voor het toevoegen van bestanden en bestandsgroepen. Tabelpartitionering wordt ondersteund in Azure SQL Database door partities te maken in de PRIMARY
bestandsgroep. Voor SQL Server en Azure SQL Managed Instance wilt u mogelijk een door de gebruiker gemaakte bestandsgroep opgeven, afhankelijk van uw procedures voor bestandsgroep en bestandsbeheer.
In het voorbeeld wordt stapsgewijs uitgelegd hoe u een gepartitioneerde tabel maakt in SQL Server Management Studio (SSMS) met behulp van Transact-SQL en alle partities toewijst aan de PRIMARY
bestandsgroep. Het voorbeeld:
- Hiermee maakt u een partitiefunctie RANGE RIGHT met de naam
myRangePF1
met drie grenswaarden met behulp van het datum/tijd2- gegevenstype. Drie grenswaarden resulteren in een gepartitioneerde tabel met vier partities. - Hiermee maakt u een partitieschema met de naam
myRangePS1
dat gebruikmaakt van deALL TO
syntaxis om alle partities in demyRangePF1
partitiefunctie toe te wijzen aan dePRIMARY
-bestandsgroep. - Hiermee maakt u een tabel met de naam
PartitionTable
in hetmyRangePS1
partitieschema, waarbij u een kolom met de naamcol1
opgeeft als de partitiekolom.
Maak in Objectverkennerverbinding met een exemplaar van de Database Engine.
Selecteer op de standaardbalk Nieuwe query.
Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren. In dit voorbeeld wordt een partitiefunctie en een partitieschema gemaakt. Er wordt een nieuwe tabel gemaakt met het partitieschema dat is opgegeven als de opslaglocatie.
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
Een gepartitioneerde tabel maken voor meerdere bestandsgroepen met Transact-SQL
Volg de stappen in deze sectie om een of meer bestandsgroepen, bijbehorende bestanden en een gepartitioneerde tabel te maken met behulp van Transact-SQL in SSMS.
Zowel SQL Server als Azure SQL Managed Instance ondersteunen het maken van bestandsgroepen en bestanden. Azure SQL Managed Instance configureert automatisch het pad voor alle toegevoegde databasebestanden, zodat de opdracht ALTER DATABASE ADD FILE
in Azure SQL Managed Instance de parameter FILENAME
niet toestaat. Azure SQL Database biedt alleen ondersteuning voor het maken van gepartitioneerde tabellen in de PRIMARY
-bestandsgroep. Zoek voorbeeldcode voor Azure SQL Database in Maak een gepartitioneerde tabel in één bestandsgroep met behulp van Transact-SQL.
Voer het volgende voorbeeld uit voor een lege database. Het voorbeeld:
- Voegt vier nieuwe bestandsgroepen toe aan een database.
- Voegt één bestand toe aan elke bestandsgroep.
- Hiermee maakt u een partitiefunctie genaamd BEREIK RECHTS
myRangePF1
met drie grenswaarden, waarmee een tabel wordt verdeeld in vier partities. - Hiermee maakt u een partitieschema met de naam
myRangePS1
datmyRangePF1
toepast op de vier nieuwe bestandsgroepen. - Hiermee maakt u een gepartitioneerde tabel met de naam
PartitionTable
die gebruikmaakt vanmyRangePS1
omcol1
te partitioneren.
Maak in ObjectVerkennerverbinding met een exemplaar van Database Engine.
Selecteer op de Standaardwerkbalk Nieuwe query.
In dit voorbeeld wordt een nieuwe database gemaakt en gebruikt. Vervolgens worden nieuwe bestandsgroepen, een partitiefunctie en een partitieschema gemaakt. Er wordt een nieuwe tabel gemaakt met het partitieschema dat is opgegeven als de opslaglocatie. Kopieer en plak het volgende voorbeeld in het queryvenster.
Als u een beheerd exemplaar gebruikt, verwijdert u de parameter
FILENAME
en de bijbehorende waarde uit de opdrachtALTER DATABASE ADD FILE
. Het beheerde exemplaar bepaalt automatisch het bestandspad voor u.Als u een SQL Server-exemplaar gebruikt, past u de waarde voor de parameter
FILENAME
aan op een locatie die geschikt is voor uw exemplaar.Als u een bestaande database wilt gebruiken, verwijdert u de opdracht
CREATE DATABASE
en wijzigt u de instructieUSE
in de juiste databasenaam.SELECT uitvoeren.
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
Een tabel partitioneren met SSMS
Volg de stappen in deze sectie om desgewenst bestandsgroepen en bijbehorende bestanden te maken en maak vervolgens een gepartitioneerde tabel of partitioneer een bestaande tabel met behulp van de Wizard Partitie maken in SQL Server Management Studio (SSMS). De Partitie maken Wizard is beschikbaar in SSMS voor SQL Server en Azure SQL Managed Instance. Raadpleeg voor Azure SQL Database Een gepartitioneerde tabel maken in één bestandsgroep met behulp van Transact-SQL.
Nieuwe bestandsgroepen maken (optioneel)
Als u de gepartitioneerde tabel wilt plaatsen in een of meer nieuwe bestandsgroepen, volgt u de stappen in deze sectie. Zowel SQL Server als Azure SQL Managed Instance ondersteunen het maken van bestandsgroepen en bestanden. Voor Azure SQL Managed Instance wordt het pad voor alle gemaakte bestanden automatisch voor u geconfigureerd.
Klik in Objectverkenner met de rechtermuisknop op de database waarin u een gepartitioneerde tabel wilt maken en selecteer Eigenschappen.
Selecteer in het dialoogvenster Database-eigenschappen -database_name onder Een pagina selecterenBestandsgroepen.
Selecteer onder Rijende optie Toevoegen. Voer in de nieuwe rij de filegroupnaam in.
Waarschuwing
Wanneer u meerdere bestandsgroepen opgeeft, moet u altijd één extra bestandsgroep hebben naast het aantal bestandsgroepen dat is opgegeven voor de grenswaarden wanneer u partities maakt.
Ga door met het toevoegen van rijen totdat u alle bestandsgroepen voor de gepartitioneerde tabel of tabellen hebt gemaakt.
Selecteer OK-.
Onder Selecteer een pagina, selecteer Bestanden.
Selecteer onder rijen, toevoegen. Voer in de nieuwe rij een bestandsnaam in en selecteer een bestandsgroep.
Ga door met het toevoegen van rijen totdat u ten minste één bestand voor elke bestandsgroep hebt gemaakt.
Een gepartitioneerde tabel maken
Vouw desgewenst de map Tabellen uit en maak een tabel zoals u dat normaal zou doen. Zie Tabellen maken (Database Engine)voor meer informatie. U kunt ook een bestaande tabel opgeven in de volgende stap.
Klik met de rechtermuisknop op de tabel die u wilt partitioneren, wijs Storageaan en selecteer Partitie maken....
Selecteer in de wizard Partitie makenop de pagina Welkom bij de wizard Partitie makenVolgende.
Selecteer op de pagina Een partitioneringskolom selecteren, in de Beschikbare partitioneringskolommen tabel, de kolom waarmee u uw tabel wilt partitioneren. Alleen kolommen met gegevenstypen die kunnen worden gebruikt om gegevens te partitioneren, worden weergegeven in de Beschikbare partitioneringskolommen raster. Als u een berekende kolom als de partitioneringskolom selecteert, moet de kolom worden gemaakt als een persistente kolom.
De keuzes die u hebt voor de partitioneringskolom en het waardenbereik worden voornamelijk bepaald door de mate waarin uw gegevens op een logische manier kunnen worden gegroepeerd. U kunt er bijvoorbeeld voor kiezen om uw gegevens op te delen in logische groeperingen per maanden of kwartalen van een jaar. De query's die u wilt uitvoeren op basis van uw gegevens, bepalen of deze logische groepering voldoende is voor het beheren van uw tabelpartities. Alle gegevenstypen zijn geldig voor gebruik als partitioneringskolommen, behalve tekst, ntext, afbeelding, xml-, tijdstempel, varchar(max), nvarchar(max), varbinary(max), aliasgegevenstypen, of common Language Runtime (CLR) door de gebruiker gedefinieerde gegevenstypen.
De volgende extra opties zijn beschikbaar op deze pagina:
Plaats deze tabel bij de geselecteerde gepartitioneerde tabel
Hiermee kunt u een gepartitioneerde tabel selecteren die gerelateerde gegevens bevat die moeten worden samengevoegd met deze tabel in de partitioneringskolom. Tabellen met partities die zijn gekoppeld aan de partitioneringskolommen, worden doorgaans efficiënter opgevraagd.Niet-unieke en unieke indexen uitlijnen met een geïndexeerde partitiekolom bij opslag
Hiermee worden alle indexen van de tabel uitgelijnd die zijn gepartitioneerd met hetzelfde partitieschema. Wanneer een tabel en de bijbehorende indexen zijn uitgelijnd, kunt u partities in en uit gepartitioneerde tabellen effectiever verplaatsen, omdat uw gegevens op dezelfde manier worden gepartitioneerd.Nadat u de partitiekolom en eventuele andere opties hebt geselecteerd, selecteert u Volgende.
Selecteer op de pagina Selecteer een Partitiefunctie, onder Selecteer partitiefunctie, de optie Nieuwe partitiefunctie of Bestaande partitiefunctie. Als u nieuwe partitiefunctiekiest, voert u de naam van de functie in. Als u bestaande partitiefunctiekiest, selecteert u de naam van de functie die u in de lijst wilt gebruiken. De optie bestaande partitiefunctie is niet beschikbaar als de database geen andere partitiefuncties bevat.
Nadat u deze pagina hebt voltooid, selecteert u Volgende.
Selecteer op de pagina Partitieschema selecteren onder Partitieschema selecterende optie Nieuw partitieschema of Bestaand partitieschema. Als u nieuw partitieschemakiest, voert u de naam van het schema in. Als u bestaand partitieschemakiest, selecteert u de naam van het schema dat u in de lijst wilt gebruiken. De optie Bestaand partitieschema is niet beschikbaar als er geen andere partitieschema's in de database zijn.
Nadat u deze pagina hebt voltooid, selecteert u Volgende.
Selecteer op de pagina Partities onder Bereik , linkergrens of rechtergrens. linkergrens geeft aan dat de hoogste begrenzingswaarde wordt opgenomen in een partitie. rechtergrens geeft aan dat de laagste begrenzingswaarde in elke partitie wordt opgenomen. Meer informatie over rechter- en linkerbereiken in Partitiefunctie.
Wanneer u meerdere grenspunten opgeeft, moet u altijd één extra rij invoeren naast de rijen die grenswaarden aan een bestandsgroep toewijzen.
Selecteer in de Bestandsgroepen selecteren en grenswaarden opgeven raster, onder Filegroup, de bestandsgroep waarin u uw gegevens wilt partitioneren. Voer onder Grensde grenswaarde voor elke bestandsgroep in. Als u meerdere of alle partities aan dezelfde bestandsgroep wilt toewijzen, selecteert u dezelfde bestandsnaam voor elke rij. Als u een bestandsgroep op één rij selecteert en de grenswaarde leeg blijft, wijst de partitiefunctie de hele tabel of index toe aan één partitie met behulp van de naam van de partitiefunctie.
De volgende extra opties zijn beschikbaar op deze pagina:
Grenzen instellen...
Hiermee opent u het dialoogvenster Grenswaarden instellen om de gewenste grenswaarden en datumbereiken voor uw partities te selecteren. Deze optie is alleen beschikbaar wanneer u een partitiekolom hebt geselecteerd die een van de volgende gegevenstypen bevat: datum, datum/tijd, smalldatetime-, datum/tijd2of datum/tijd-offset.Opslag schatten
Maakt een schatting van het aantal rijen, de vereiste ruimte en de beschikbare ruimte voor opslag voor elke bestandsgroep die is opgegeven voor de partities. Deze waarden worden in het raster weergegeven als alleen-lezenwaarden.Het dialoogvenster Grenswaarden instellen biedt de volgende extra opties:
begindatum
Hiermee selecteert u de begindatum voor de bereikwaarden van uw partities.einddatum
Hiermee selecteert u de einddatum voor de bereikwaarden van uw partities. Als u linkergrens hebt geselecteerd op de pagina Kaartpartities, zal deze datum de laatste waarde zijn voor elke bestandsgroep/partitie. Als u Rechtergrens op de pagina Kaartpartities hebt geselecteerd, is deze datum de eerste waarde in de voorlaatste bestandsgroep.datumbereik
Selecteert de datumgranulariteit of bereikwaarde die u wilt verhogen voor elke partitie.Nadat u deze pagina hebt voltooid, selecteert u Volgende.
Geef in de Een uitvoeroptie selecteren pagina op hoe u de gepartitioneerde tabel wilt voltooien. Selecteer Script maken om een SQL-script te maken op basis van de vorige pagina's in de wizard. Selecteer Direct uitvoeren om de nieuwe gepartitioneerde tabel te maken nadat u alle resterende pagina's in de wizard hebt voltooid. Selecteer Schema om de nieuwe gepartitioneerde tabel op een vooraf bepaald tijdstip in de toekomst te maken.
Als u Scriptmaken selecteert, zijn de volgende opties beschikbaar onder Scriptopties:
script voor bestand
Hiermee wordt het script gegenereerd als een.sql
-bestand. Voer een bestandsnaam en locatie in het vak Bestandsnaam in of selecteer Bladeren om het dialoogvenster Scriptbestandslocatie te openen. Selecteer in Opslaan alsUnicode-tekst of ANSI-tekst.Naar Klembord kopiëren
Hiermee wordt het script op het Klembord opgeslagen.script naar nieuw queryvenster
Genereert het script in een nieuw venster van de Queryeditor. Dit is de standaardselectie.Als u Schemaselecteert, selecteert u Schema wijzigen.
Voer in het dialoogvenster Nieuwe taakplanning in het vak Naam de naam van de taakplanning in.
Selecteer op de lijst met schema-type het type schema:
automatisch starten wanneer SQL Server Agent wordt gestart
starten wanneer de CPU's inactief worden
terugkerende. Selecteer deze optie als de nieuwe gepartitioneerde tabel regelmatig wordt bijgewerkt met nieuwe informatie.
Eenmalige. Dit is de standaardselectie.
Vink het selectievakje Ingeschakeld aan of uit om de planning in of uit te schakelen.
Als u terugkerendeselecteert:
Geef onder Frequentieop de lijst Vindt plaats de frequentie van het optreden:
Als u Dagelijkseselecteert, vult u in het vak elke in hoe vaak de taakplanning in dagen wordt herhaald.
Als u Wekelijksselecteert, geeft u in het vak Herhaalt elke op hoe vaak de taakplanning in weken wordt herhaald. Selecteer de dag of dagen van de week waarop de taakplanning wordt uitgevoerd.
Als u Maandelijksselecteert, selecteert u Dag of De.
Als u Dagselecteert, voert u zowel de datum in van de maand waarop de taakplanning moet worden uitgevoerd als hoe vaak de taakplanning in maanden wordt herhaald. Als u bijvoorbeeld wilt dat de taakplanning wordt uitgevoerd op de 15e dag van de maand om de andere maand, selecteert u dag en voert u '15' in het eerste vak en '2' in het tweede vak in. Het grootste getal dat in het tweede vak is toegestaan, is '99'.
Als u Deselecteert, selecteert u de specifieke dag van de week binnen de maand waarin u de taakplanning wilt uitvoeren en hoe vaak de taakplanning in maanden wordt herhaald. Als u bijvoorbeeld wilt dat de taakplanning op de laatste weekdag van de maand elke andere maand wordt uitgevoerd, selecteert u dag, selecteert u laatste uit de eerste lijst en weekdag uit de tweede lijst en voert u vervolgens '2' in het laatste vak in. U kunt ook eersteselecteren, tweede, derdeof vierde, evenals specifieke weekdagen (bijvoorbeeld: zondag of woensdag) uit de eerste twee lijsten. Het grootste aantal dat in het laatste vak is toegestaan, is '99'.
Geef onder Dagelijkse frequentieop hoe vaak de taakplanning op de uitvoeringsdag wordt herhaald.
Als u eenmaal opselecteert, voert u het specifieke tijdstip van de dag in waarop de taakplanning moet worden uitgevoerd in het vak Plaatsvindt eenmaal op vak. Voer het uur, de minuut en de seconde van de dag in, evenals AM of PM.
Als u elkeselecteert, geeft u op hoe vaak de taak op de geselecteerde dag wordt uitgevoerd, zoals gekozen onder Frequentie. Als u bijvoorbeeld wilt dat de taakplanning elke 2 uur wordt herhaald op de dag dat deze wordt uitgevoerd, selecteert u Vindt elkeplaats, voert u '2' in het eerste vak in en selecteert u vervolgens uur(en) in de lijst. Vanuit deze lijst kunt u ook minuut(en) en seconde(n)selecteren. Het grootste aantal dat in het eerste vak is toegestaan, is '100'.
In het vak Starten bij voert u het tijdstip in waarop de taakplanning moet beginnen. Voer in het vak Eindigen op het tijdstip in waarop de taakplanning moet stoppen met herhalen. Voer het uur, de minuut en de seconde van de dag in, evenals AM of PM.
Voer onder Duurin begindatumde datum in waarop de taakplanning moet worden uitgevoerd. Selecteer einddatum of Geen einddatum om aan te geven wanneer de taakplanning niet meer moet worden uitgevoerd. Als u einddatumselecteert, voert u de datum in waarop u het taakschema wilt stoppen.
Als u Eenmaligeselecteert onder Eenmalige gebeurtenis, typt u in het vak Datum de datum waarop de taakplanning wordt uitgevoerd. Voer in het vak Tijd de tijd in waarop de taakplanning wordt uitgevoerd. Voer het uur, de minuut en de seconde van de dag in, evenals AM of PM.
Controleer onder Samenvattingin Beschrijvingof alle taakplanningsinstellingen juist zijn.
Selecteer OK-.
Nadat u deze pagina hebt voltooid, selecteert u Volgende.
Op de pagina Samenvatting controleren, onder Uw selecties herzien, vouw alle beschikbare opties uit om te controleren of alle partitie-instellingen correct zijn. Als alles is zoals verwacht, selecteert u voltooien.
Op de pagina Wizard Partitie maken voortgang controleert u de statusinformatie over de acties van de Wizard Partitie maken. Afhankelijk van de opties die u in de wizard hebt geselecteerd, kan de voortgangspagina een of meer acties bevatten. In het bovenste vak wordt de algemene status van de wizard en het aantal status-, fout- en waarschuwingsberichten weergegeven dat de wizard heeft ontvangen.
De volgende opties zijn beschikbaar op de pagina Wizard Partitie maken pagina:
Details
Geeft de actie, de status en eventuele berichten weer die door de door de wizard uitgevoerde actie worden geretourneerd.Actie
Hiermee geeft u het type en de naam van elke actie.status
Hiermee wordt aangegeven of de wizardactie als geheel de waarde van Succes of Falenheeft geretourneerd.bericht
Bevat eventuele foutberichten of waarschuwingen die worden geretourneerd door het proces.rapport
Hiermee maakt u een rapport met de resultaten van de Partitie-aanmaakwizard. De opties zijn Rapport weergeven, Rapport opslaan in bestand, Rapport naar Klembord kopiërenen Rapport verzenden als e-mail.Rapport weergeven
Open het dialoogvenster Rapport weergeven, dat een tekstrapport bevat van de voortgang van de Wizard Partitie maken.Rapport opslaan in bestand
Hiermee opent u het dialoogvenster Rapport opslaan als.Rapport naar klembord kopiëren
Kopieert de resultaten van het voortgangsrapport van de wizard naar het Klembord.rapport verzenden als e-mail
Kopieert de resultaten van het voortgangsrapport van de wizard naar een e-mailbericht.Wanneer u klaar bent, selecteer sluiten.
De Wizard Partitie maken maakt de partitiefunctie en het schema en past vervolgens de partitionering toe op de opgegeven tabel. Als u de tabelpartitionering wilt controleren, klikt u in Objectverkenner met de rechtermuisknop op de tabel en selecteert u Eigenschappen. Selecteer de pagina Storage. Op de pagina worden informatie weergegeven, zoals de naam van de partitiefunctie en het schema en het aantal partities.
Querymetagegevens van gepartitioneerde tabellen en indexen
U kunt query's uitvoeren op metagegevens om te bepalen of een tabel is gepartitioneerd, de grenspunten voor een gepartitioneerde tabel, de partitiekolom voor een gepartitioneerde tabel, het aantal rijen in elke partitie en of gegevenscompressie is geïmplementeerd op partities.
Bepalen of een tabel is gepartitioneerd
De volgende query retourneert een of meer rijen als de tabel PartitionTable
is gepartitioneerd of als er niet-geclusterde indexen in de tabel zijn gepartitioneerd. Als de tabel niet is gepartitioneerd en er geen niet-geclusterde indexen in de tabel zijn gepartitioneerd, worden er geen rijen geretourneerd.
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
De grenswaarden voor een gepartitioneerde tabel bepalen
De volgende query retourneert de grenswaarden voor elke partitie in de PartitionTable
tabel.
De query maakt gebruik van de kolom type
in sys.indexes om alleen informatie te retourneren voor de geclusterde index van de tabel of voor de basistabel als de tabel een heap-is. Als u gepartitioneerde niet-geclusterde indexen wilt opnemen in de queryresultaten, verwijdert of markeert u AND i.type <= 1
uit de query.
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;
De partitiekolom voor een gepartitioneerde tabel bepalen
De volgende query retourneert de naam van de partitie kolom voor tabel PartitionTable
.
De query maakt gebruik van de kolom type
in sys.indexes om alleen informatie te retourneren voor de geclusterde index van de tabel of voor de basistabel als de tabel een heap-is. Als u gepartitioneerde niet-geclusterde indexen wilt opnemen in de queryresultaten, verwijdert of markeert u AND i.type <= 1
uit de query.
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
Bepalen welke rijen het mogelijke bereik van waarden in elke partitie beschrijven
De volgende query retourneert de rijen per partitie voor tabel PartitionTable
en een beschrijving van de vergelijkingsoperators voor de partitiefunctie die wordt gebruikt.
Query oorspronkelijk geleverd door Kalen Delaney.
De query maakt gebruik van de kolom type
in sys.indexes om alleen informatie te retourneren voor de geclusterde index van de tabel of voor de basistabel als de tabel een heap-is. Als u gepartitioneerde niet-geclusterde indexen wilt opnemen in de queryresultaten, verwijdert of markeert u AND i.type <= 1
uit de query.
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 de kolom TextComparison
wordt het mogelijke bereik van waarden in elke partitie beschreven op basis van de definitie van de partitiefunctie. Hier volgt een weergave van voorbeeldresultaten van de query:
SchemaName | TableName | IndexName | Partitienummer | PartitionFunctionName | Rijen | Grenswaarde | TekstVergelijking |
---|---|---|---|---|---|---|---|
Dbo | Partitietabel | PK_PartitionTable | 1 | PFTest | 0 | 2022-03-01 00:00:00.000 | >= Minimumwaarde en < 1 maart 2022 12:00 |
dbo | Partitietabel | PK_PartitionTable | 2 | PFTest | 2 | 2022-04-01 00:00:00.000 | >= 1 maart 2022 12:00 uur en < 1 april 2022 12:00 uur |
Dbo | Partitietabel | PK_PartitionTable | 3 | PFTest | 1 | 2022-05-01 00:00:00.000 | >= 1 apr 2022 12:00 uur en < 1 mei 2022 12:00 uur |
Dbo | Partitietabel | PK_PartitionTable | 4 | PFTest | 0 | 2022-06-01 00:00:00.000 | >= 1 mei 2022 12:00 uur en < 1 juni 2022 12:00 |
Dbo | Partitionstabel | PK_PartitionTable | 5 | PFTest | 1 | 2022-07-01 00:00:00.000 | >= 1 juni 2022 12:00 uur en < 1 juli 2022 12:00 uur |
Dbo | Partitietabel | PK_PartitionTable | 6 | PFTest | 0 | NUL | >= 1 juli 2022 12:00 uur en < maximumwaarde |
Beperkingen
Meer informatie over beperkingen en prestatieoverwegingen voor partitionering in Beperkingen
Verwante inhoud
- gepartitioneerde tabellen en indexen
- Schaalbaarheid met Azure SQL Database
- Tabellen partitioneren in toegewezen SQL-pool
- architectuur en ontwerphandleiding voor SQL Server- en Azure SQL-indexen
- ALTER DATABASE (Transact-SQL) Bestands- en bestandsgroepopties
- CREATE PARTITION FUNCTION (Transact-SQL)
- MAKEN VAN PARTITIESCHEMA (Transact-SQL)
- CREATE TABLE (Transact-SQL)