Udostępnij za pomocą


Tworzenie partycjonowanych tabel i indeksów

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Tabelę lub indeks partycjonowany można utworzyć przy użyciu programu SQL Server Management Studio lub języka Transact-SQL. Dane w tabelach podzielonych na partycje i indeksy są podzielone w poziomie na jednostki, które mogą być rozłożone na więcej niż jedną grupę plików w bazie danych lub przechowywane w jednej grupie plików. Partycjonowanie może sprawić, że duże tabele i indeksy będą bardziej zarządzane i skalowalne.

Tworzenie partycjonowanej tabeli lub indeksu zwykle odbywa się w trzech lub czterech częściach:

  1. Opcjonalnie utwórz grupę plików lub grupy plików i odpowiadające im pliki danych, które będą przechowywać partycje określone przez schemat partycji. Głównym powodem umieszczania partycji w wielu grupach plików jest zapewnienie, że można niezależnie wykonywać operacje tworzenia kopii zapasowych i przywracania w grupach plików. Jeśli nie jest to wymagane, możesz przypisać wszystkie partycje do jednej grupy plików przy użyciu istniejącej grupy plików, takiej jak PRIMARY, lub nowej grupy plików z powiązanymi plikami. W prawie wszystkich scenariuszach uzyskasz wszystkie korzyści z partycjonowania , niezależnie od tego, czy używasz wielu grup plików.

  2. Utwórz funkcję partycji , która mapuje wiersze tabeli lub indeksu na partycje na podstawie wartości określonej kolumny. Do partycjonowania wielu obiektów można użyć funkcji pojedynczej partycji.

  3. Utwórz schemat partycji , który mapuje partycje partycjonowanej tabeli lub indeksu na jedną grupę plików lub wiele grup plików. Można użyć jednego schematu partycji do partycjonowania wielu obiektów.

  4. Utwórz lub zmień tabelę lub indeks i określ schemat partycji jako lokalizację przechowywania wraz z kolumną, która będzie służyć jako kolumna partycjonowania.

  • Partycjonowanie jest w pełni obsługiwane w Azure SQL Database i SQL Database w Fabric. Wszystkie partycje należy umieścić w PRIMARY grupie plików, ponieważ w usłudze Azure SQL Database i bazie danych SQL w Fabric dostępna jest tylko PRIMARY grupa plików.
  • Partycjonowanie tabel jest dostępne w dedykowanych pulach SQL w usłudze Azure Synapse Analytics z pewnymi różnicami składniowymi. Aby uzyskać więcej informacji, zobacz Partycjonowanie tabel w dedykowanej puli SQL.

Permissions

Utworzenie tabeli partycjonowanej wymaga uprawnienia CREATE TABLE w bazie danych i uprawnienia ALTER w schemacie, w którym jest tworzona tabela. Utworzenie indeksu partycjonowanego wymaga uprawnienia ALTER w tabeli lub widoku, w którym tworzony jest indeks. Utworzenie tabeli partycjonowanej lub indeksu wymaga jednego z następujących dodatkowych uprawnień:

  • ZMIENIANIE UPRAWNIEŃ DO PRZESTRZENI DANYCH To uprawnienie domyślnie dotyczy członków stałej roli serwera sysadmin oraz stałych ról bazy danych db_owner i db_ddladmin.

  • UPRAWNIENIE CONTROL lub ALTER w bazie danych, w której tworzona jest funkcja partycji oraz schemat partycji.

  • CONTROL SERVER lub ALTER ANY DATABASE uprawnienia na serwerze bazy danych, w której tworzona jest funkcja partycji i schemat partycji.

Tworzenie tabeli partycjonowanej w jednej grupie plików przy użyciu Transact-SQL

Jeśli nie musisz niezależnie wykonywać operacji tworzenia kopii zapasowych i przywracania w grupach plików, partycjonowanie tabeli przy użyciu jednej grupy plików upraszcza zarządzanie partycjonowaną tabelą w czasie.

Ten przykład jest odpowiedni dla usług Azure SQL Database i SQL Database w sieci szkieletowej, które nie obsługują dodawania plików i grup plików. W programie SQL Server i usłudze Azure SQL Managed Instance możesz określić grupę plików utworzoną przez użytkownika w zależności od praktyk w zakresie zarządzania plikami i grupami plików.

W przykładzie przedstawiono procedurę tworzenia tabeli partycjonowanej w programie SQL Server Management Studio (SSMS) przy użyciu Transact-SQL i przypisywaniu PRIMARY wszystkich partycji do grupy plików. Przykład:

  • Tworzy funkcję partycji RANGE RIGHT o nazwie myRangePF1 z trzema wartościami granic przy użyciu typu danych datetime2 . Trzy wartości granic spowodują partycjonowaną tabelę z czterema partycjami.
  • Tworzy schemat partycjonowania o nazwie myRangePS1, który używa składni ALL TO do przypisania wszystkich partycji w funkcji myRangePF1 do grupy plików PRIMARY.
  • Tworzy tabelę o nazwie PartitionTable w schemacie myRangePS1 partycji, określając kolumnę o nazwie col1 jako kolumnę partycjonowania.
  1. W Eksploratorze Obiektów nawiąż połączenie z instancją silnika bazy danych.

  2. Na pasku Standardowa wybierz pozycję Nowe zapytanie.

  3. Skopiuj i wklej poniższy przykład w oknie zapytania, a następnie wybierz pozycję Wykonaj. W tym przykładzie jest tworzona funkcja partycji i schemat partycji. Zostanie utworzona nowa tabela ze schematem partycji określonym jako lokalizacja przechowywania.

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

Tworzenie tabeli podzielonej na partycje w wielu grupach plików za pomocą Transact-SQL

Wykonaj kroki opisane w tej sekcji, aby utworzyć co najmniej jedną grupę plików, odpowiadające im pliki i tabelę partycjonowaną przy użyciu Transact-SQL w programie SSMS.

Zarówno program SQL Server, jak i usługa Azure SQL Managed Instance obsługują tworzenie grup plików i plików. Azure SQL Managed Instance automatycznie konfiguruje ścieżkę dla wszystkich dodanych plików bazy danych, więc polecenie ALTER DATABASE ADD FILE nie zezwala na parametr FILENAME. Usługa Azure SQL Database obsługuje tworzenie tabel partycjonowanych tylko w PRIMARY grupie plików. Znajdź przykładowy kod dla usługi Azure SQL Database w temacie Tworzenie tabeli partycjonowanej w jednej grupie plików przy użyciu języka Transact-SQL.

Uruchom poniższy przykład dla pustej bazy danych. Przykład:

  • Dodaje cztery nowe grupy plików do bazy danych.
  • Dodaje jeden plik do każdej grupy plików.
  • Tworzy funkcję partycji RANGE RIGHT o nazwie myRangePF1 z trzema wartościami granic, które podzielą tabelę na cztery partycje.
  • Tworzy schemat partycji o nazwie myRangePS1 , który ma zastosowanie myRangePF1 do czterech nowych grup plików.
  • Tworzy tabelę partycjonowaną o nazwie PartitionTable, która używa myRangePS1 do partycjonowania col1.
  1. W Eksploratorze Obiektów nawiąż połączenie z instancją silnika bazy danych.

  2. Na pasku narzędzi Standardowy wybierz pozycję Nowe zapytanie.

  3. W tym przykładzie utworzono nową bazę danych i użyto jej. Następnie tworzy nowe grupy plików, funkcję partycji i schemat partycji. Zostanie utworzona nowa tabela ze schematem partycji określonym jako lokalizacja przechowywania. Skopiuj i wklej poniższy przykład w oknie zapytania.

    Jeśli używasz wystąpienia zarządzanego, usuń parametr FILENAME i skojarzoną wartość z polecenia ALTER DATABASE ADD FILE. Wystąpienie zarządzane określa ścieżkę pliku automatycznie.

    Jeśli używasz wystąpienia programu SQL Server, dostosuj wartość parametru FILENAME do lokalizacji odpowiedniej dla danego wystąpienia.

    Jeśli chcesz użyć istniejącej bazy danych, usuń CREATE DATABASE polecenie i zmień instrukcję USE na odpowiednią nazwę bazy danych.

    WYBIERZ pozycję Wykonaj.

    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
    

Partycjonowanie tabeli za pomocą programu SSMS

Wykonaj kroki opisane w tej sekcji, aby opcjonalnie utworzyć grupy plików i odpowiednie pliki, a następnie utworzyć tabelę partycjonowaną lub podzielić istniejącą tabelę przy użyciu Kreatora tworzenia partycji w programie SQL Server Management Studio (SSMS). Kreator tworzenia partycji jest dostępny w programie SSMS dla programu SQL Server i usługi Azure SQL Managed Instance. W przypadku usługi Azure SQL Database zobacz Tworzenie tabeli partycjonowanej w jednej grupie plików przy użyciu języka Transact-SQL.

Tworzenie nowych grup plików (opcjonalnie)

Jeśli chcesz umieścić tabelę partycjonowaną w co najmniej jednej nowej grupie plików, wykonaj kroki opisane w tej sekcji. Zarówno program SQL Server, jak i usługa Azure SQL Managed Instance obsługują tworzenie grup plików i plików. W przypadku usługi Azure SQL Managed Instance ścieżka wszystkich utworzonych plików zostanie automatycznie skonfigurowana.

  1. W Eksploratorze obiektów kliknij prawym przyciskiem myszy bazę danych, w której chcesz utworzyć tabelę partycjonowaną, a następnie wybierz polecenie Właściwości.

  2. W oknie dialogowym Właściwości bazy danych -database_name w obszarze Wybierz stronę wybierz pozycję Grupy plików.

  3. W obszarze Wiersze wybierz pozycję Dodaj. W nowym wierszu wprowadź nazwę grupy plików.

    Warning

    Podczas określania wielu grup plików należy zawsze mieć jedną dodatkową grupę plików oprócz liczby grup plików określonych dla wartości granic podczas tworzenia partycji.

  4. Kontynuuj dodawanie wierszy do momentu utworzenia wszystkich grup plików dla partycjonowanej tabeli lub tabel.

  5. Kliknij przycisk OK.

  6. W obszarze Wybierz stronę wybierz pozycję Pliki.

  7. W obszarze Wiersze wybierz pozycję Dodaj. W nowym wierszu wprowadź nazwę pliku i wybierz grupę plików.

  8. Kontynuuj dodawanie wierszy do momentu utworzenia co najmniej jednego pliku dla każdej grupy plików.

Tworzenie tabeli partycjonowanej

  1. Opcjonalnie rozwiń folder Tables i utwórz tabelę tak, jak zwykle. Aby uzyskać więcej informacji, zobacz Tworzenie tabel (Silnik bazy danych). Alternatywnie możesz określić istniejącą tabelę w następnym kroku.

  2. Kliknij prawym przyciskiem na tabeli, którą chcesz podzielić, wskaż pozycję Pamięć masowa, a następnie wybierz pozycję Utwórz partycję....

  3. W Kreatorze tworzenia partycji na stronie Kreator tworzenia partycji wybierz pozycję Dalej.

  4. Na stronie Wybieranie kolumny partycjonowania w siatce Dostępne kolumny partycjonowania wybierz kolumnę, na której chcesz podzielić tabelę. W siatce Dostępnych kolumn partycjonowania będą wyświetlane tylko kolumny z typami danych, których można użyć do partycjonowania danych. W przypadku wybrania kolumny obliczeniowej jako kolumny partycjonowania kolumna musi zostać utworzona jako utrwała kolumna.

    Dostępne opcje dla kolumny partycjonowania i zakresu wartości są określane głównie przez zakres, w jakim dane można zgrupować w logiczny sposób. Możesz na przykład podzielić dane na logiczne grupy według miesięcy lub kwartałów roku. Zapytania, które planujesz wykonać względem danych, określają, czy to grupowanie logiczne jest odpowiednie do zarządzania partycjami tabeli. Wszystkie typy danych są prawidłowe do użycia jako kolumny partycjonowania, z wyjątkiem tekstu, ntext, obrazu, xml, znacznika czasu, varchar(max), nvarchar(max), varbinary(max), typów danych aliasów lub typów danych zdefiniowanych przez użytkownika w środowisku uruchomieniowym wspólnego języka (CLR).

    Na tej stronie są dostępne następujące dodatkowe opcje:

    Umieść tę tabelę w wybranej tabeli z partycją
    Umożliwia wybranie tabeli partycjonowanej zawierającej powiązane dane do sprzężenia z tą tabelą w kolumnie partycjonowania. Tabele z partycjami łączonymi w kolumnach partycjonowania są zazwyczaj efektywniej przetwarzane w zapytaniach.

    Dopasowanie przechowywania indeksów nieunikatowych i unikatowych do indeksowanej kolumny partycji
    Dopasowuje wszystkie indeksy tabeli, które są podzielone na partycje z tym samym schematem partycji. Gdy tabela i jej indeksy są wyrównane, można efektywniej przenosić partycje do i z tabel partycjonowanych, ponieważ dane są partycjonowane w taki sam sposób.

    Po wybraniu kolumny partycjonowania i innych opcji wybierz pozycję Dalej.

  5. Na stronie Wybieranie funkcji partycji w obszarze Wybierz funkcję partycji wybierz pozycję Nowa funkcja partycji lub Istniejąca funkcja partycji. Jeśli wybierzesz pozycję Nowa funkcja partycji, wprowadź nazwę funkcji. Jeśli wybierzesz pozycję Istniejąca funkcja partycji, wybierz nazwę funkcji, której chcesz użyć z listy. Opcja Istniejąca funkcja partycji nie będzie dostępna, jeśli w bazie danych nie ma żadnych innych funkcji partycji.

    Po ukończeniu tej strony wybierz pozycję Dalej.

  6. Na stronie Wybieranie schematu partycji w obszarze Wybierz schemat partycji wybierz pozycję Nowy schemat partycji lub Istniejący schemat partycji. Jeśli wybierzesz pozycję Nowy schemat partycji, wprowadź nazwę schematu. W przypadku wybrania opcji Istniejący schemat partycji wybierz nazwę schematu, którego chcesz użyć z listy. Opcja Istniejący schemat partycji nie będzie dostępna, jeśli w bazie danych nie ma innych schematów partycji.

    Po ukończeniu tej strony wybierz pozycję Dalej.

  7. Na stronie Partycje mapy w obszarze Zakres wybierz granicę lewą lub prawą. Lewa granica określa, że najwyższa wartość ograniczenia zostanie uwzględniona w partycji. Granica prawa określa, że najniższa wartość ograniczenia zostanie uwzględniona w każdej partycji. Dowiedz się więcej o prawym i lewym zakresie w funkcji Partition.

    Podczas określania wielu punktów granic należy zawsze wprowadzać jeden dodatkowy wiersz oprócz wierszy przypisujących wartości granic do grupy plików.

    W siatce Wybierz grupy plików i określ wartości granic w obszarze Grupa plików wybierz grupę plików, w której chcesz podzielić dane. W obszarze Granica wprowadź wartość granicy dla każdej grupy plików. Jeśli chcesz przypisać wiele lub wszystkie partycje do tej samej grupy plików, wybierz tę samą nazwę grupy plików dla każdego wiersza. Jeśli wybierzesz grupę plików w jednym wierszu, a wartość granicy pozostanie pusta, funkcja partycji mapuje całą tabelę lub indeks na pojedynczą partycję przy użyciu nazwy funkcji partycji.

    Na tej stronie są dostępne następujące dodatkowe opcje:

    Ustaw granice...
    Otwiera okno dialogowe Ustawianie wartości granic , aby wybrać wartości granic i zakresy dat dla partycji. Ta opcja jest dostępna tylko w przypadku wybrania kolumny partycjonowania zawierającej jeden z następujących typów danych: date, datetime, smalldatetime, datetime2 lub datetimeoffset.

    Szacowanie magazynu
    Szacuje liczbę wierszy, wymagane miejsce i dostępne miejsce do magazynowania dla każdej grupy plików określonej dla partycji. Te wartości są wyświetlane w siatce jako wartości tylko do odczytu.

    Okno dialogowe Ustawianie wartości granic umożliwia wykonanie następujących dodatkowych opcji:

    Rozpoczęcie
    Wybiera datę początkową dla wartości zakresu partycji.

    Data zakończenia
    Wybiera datę zakończenia dla wartości zakresu partycji. W przypadku wybrania lewej granicy na stronie Partycje mapy ta data będzie ostatnią wartością dla każdej grupy plików/partycji. W przypadku wybrania prawej granicy na stronie Partycje mapy ta data będzie pierwszą wartością w następnej do ostatniej grupy plików.

    Zakres dat
    Wybierz stopień szczegółowości daty lub sposób zwiększania wartości zakresu, który chcesz zastosować dla każdej partycji.

    Po ukończeniu tej strony wybierz pozycję Dalej.

  8. Na stronie Wybierz opcję danych wyjściowych określ, w jaki sposób zakończyć tabelę partycjonowaną. Wybierz pozycję Utwórz skrypt, aby na podstawie poprzednich stron w kreatorze utworzyć skrypt SQL. Wybierz pozycję Uruchom natychmiast, aby utworzyć nową tabelę partycjonowaną po ukończeniu wszystkich pozostałych stron w kreatorze. Wybierz Harmonogram, aby utworzyć nową tabelę partycjonowaną w określonym czasie w przyszłości.

    W przypadku wybrania opcji Utwórz skryptdostępne są następujące opcje w obszarze Opcje skryptu:

    skrypt do pliku
    Generuje skrypt jako plik .sql. Wprowadź nazwę pliku i lokalizację w polu Nazwa pliku lub wybierz Przeglądaj, aby otworzyć okno dialogowe Lokalizacja pliku skryptu. Z opcji Zapisz jakowybierz tekst Unicode lub tekst ANSI.

    skrypt do schowka
    Zapisuje skrypt w Schowku.

    skrypt do nowego okna zapytania
    Generuje skrypt do nowego okna Edytora zapytań. Jest to wybór domyślny.

    Jeśli wybierzesz Harmonogram, wybierz Zmień harmonogram.

    1. W oknie dialogowym Nowy harmonogram zadań, w polu Nazwa wprowadź nazwę harmonogramu zadań.

    2. Na liście Typ harmonogramu wybierz typ harmonogramu:

      • uruchom automatycznie po uruchomieniu programu SQL Server Agent

      • Start za każdym razem, gdy procesory stają się bezczynne

      • Recurring. Wybierz tę opcję, jeśli nowa tabela partycjonowana regularnie aktualizuje nowe informacje.

      • raz. Jest to wybór domyślny.

    3. Zaznacz lub wyczyść pole wyboru Włączone, aby włączyć lub wyłączyć harmonogram.

    4. Jeśli wybierzesz cykliczne :

      1. W obszarze Frequencyw liście Występuje określ częstotliwość występowania:

        • Jeśli wybierzesz codziennie, w polu Powtarzaj co wprowadź częstotliwość powtarzania harmonogramu zadań w dniach.

        • Jeśli wybierzesz cotygodniowy, w polu Powtarzaj co wprowadź częstotliwość powtarzania harmonogramu zadań w tygodniach. Wybierz dzień lub dni tygodnia, w którym jest uruchamiany harmonogram zadań.

        • W przypadku wybrania miesięcznegowybierz dzień lub .

          • Jeśli wybierzesz dzień, wprowadź datę miesiąca, na który ma być zaplanowane uruchomienie harmonogramu zadań oraz częstotliwość powtarzania tego harmonogramu w miesiącach. Jeśli na przykład chcesz, aby harmonogram zadań był uruchamiany w 15 dniu miesiąca co drugi miesiąc, wybierz pozycję Dzień i wprowadź wartość "15" w pierwszym polu i "2" w drugim polu. Największa liczba dozwolona w drugim polu to "99".

          • W przypadku wybrania wybierz konkretny dzień tygodnia w ciągu miesiąca, w którym ma być uruchamiany harmonogram zadań i częstotliwość powtarzania harmonogramu zadań w miesiącach. Jeśli na przykład chcesz, aby harmonogram zadań był uruchamiany w ostatni dzień roboczy miesiąca co drugi miesiąc, wybierz pozycję Dzień, wybierz pozycję ostatni z pierwszej listy i dzień powszedni z drugiej listy, a następnie wprowadź '2' w ostatnim polu. Możesz również wybrać pierwszy, drugi, trzecilub czwarty, a także określone dni powszednie (na przykład: niedziela lub środa) z dwóch pierwszych list. Największa liczba dozwolona w ostatnim polu to "99".

      2. W obszarze Częstotliwość dziennaokreśl częstotliwość powtarzania harmonogramu zadań w dniu uruchamiania harmonogramu zadań:

        • Jeśli wybierzesz pozycję Występuje raz w, wprowadź konkretną godzinę dnia, o której harmonogram zadań powinien być uruchamiany, w polu Występuje raz w. Wprowadź godzinę, minutę i sekundę dnia, a także AM lub PM.

        • Jeśli wybierzesz Występuje co, określ, jak często harmonogram zadań jest uruchamiany w ciągu dnia wybranego w Częstotliwości . Jeśli na przykład chcesz, aby harmonogram zadań powtarzał się co 2 godziny w ciągu dnia, w którym jest uruchamiany, wybierz opcję Występuje co, wpisz "2" w pierwszym polu, a następnie wybierz godzin(y) z listy. Z tej listy możesz również wybrać minuty i sekundy. Największa liczba dozwolona w pierwszym polu to "100".

          W polu Począwszy od wprowadź godzinę rozpoczęcia harmonogramu zadań. W polu Kończące się na wprowadź godzinę, o którą harmonogram zadań powinien przestać powtarzać się. Wprowadź godzinę, minutę i sekundę dnia, a także AM lub PM.

      3. W obszarze Czas trwania, w polu Data rozpoczęcia, wprowadź datę, od której chcesz rozpocząć harmonogram zadań. Wybierz Datę zakończenia lub Brak daty zakończenia, aby wskazać, kiedy harmonogram zadań powinien przestać działać. Jeśli wybierzesz Data zakończenia, wprowadź datę, do której chcesz, aby harmonogram zadań przestał działać.

    5. Jeśli wybierzesz jednorazowe, w obszarze jednorazowe wystąpienie, w polu Data, wprowadź datę, kiedy harmonogram zadań zostanie uruchomiony. W polu Godzina wprowadź godzinę, o której harmonogram zadań zostanie wykonany. Wprowadź godzinę, minutę i sekundę dnia, a także AM lub PM.

    6. W obszarze Podsumowaniew Opissprawdź, czy wszystkie ustawienia harmonogramu zadań są poprawne.

    7. Kliknij przycisk OK.

    Po ukończeniu tej strony wybierz pozycję Dalej.

  9. Na stronie Podsumowanie przeglądu w obszarze Przejrzyj wybrane opcje rozwiń wszystkie dostępne opcje, aby sprawdzić, czy wszystkie ustawienia partycji są poprawne. Jeśli wszystko jest zgodnie z oczekiwaniami, wybierz pozycję Zakończ.

  10. Na stronie Postęp Kreatora tworzenia partycji monitoruj informacje o stanie akcji Kreatora tworzenia partycji. W zależności od opcji wybranych w kreatorze strona postępu może zawierać co najmniej jedną akcję. Górne pole zawiera ogólny stan kreatora oraz liczbę komunikatów o stanie, błędzie i ostrzeżeniach odebranych przez kreatora.

    Następujące opcje są dostępne na stronie Postęp Kreatora tworzenia partycji :

    Details
    Umożliwia wykonanie akcji, podgląd statusu oraz otrzymanie komunikatów zwracanych z działań wykonanych przez kreatora.

    Action
    Określa typ i nazwę każdej akcji.

    Status
    Wskazuje, czy akcja kreatora jako całość zwróciła wartość Powodzenie lub Niepowodzenie.

    Message
    Zawiera wszelkie komunikaty o błędach lub ostrzeżeniach zwracane z procesu.

    Report
    Tworzy raport zawierający wyniki Kreatora tworzenia partycji. Opcje to Wyświetl raport, Zapisz raport do pliku, Skopiuj raport do schowkai Wyślij raport jako email.

    Wyświetl raport
    Otwiera okno dialogowe Pokaż raport, które zawiera raport tekstowy postępu Kreatora tworzenia partycji.

    Zapisz raport do pliku
    Otwiera okno dialogowe Zapisz raport jako.

    Skopiuj raport do schowka
    Kopiuje wyniki raportu postępu kreatora do Schowka.

    wyślij raport jako wiadomość e-mail
    Kopiuje wyniki raportu o postępach kreatora do wiadomości e-mail.

    Po zakończeniu wybierz Zamknij.

Kreator tworzenia partycji tworzy funkcję partycji i schemat, a następnie stosuje partycjonowanie do określonej tabeli. Aby zweryfikować partycjonowanie tabeli, w Eksploratorze obiektów kliknij prawym przyciskiem myszy tabelę i wybierz polecenie Właściwości. Wybierz stronę Pamięć. Na stronie są wyświetlane informacje, takie jak nazwa funkcji partycji i schemat oraz liczba partycji.

Wykonywanie zapytań dotyczących metadanych partycjonowanych tabel i indeksów

Można zapytać metadanych, aby określić, czy tabela jest podzielona na partycje, punkty graniczne tabeli partycjonowanej, partycjonowaną kolumnę, liczbę wierszy w każdej partycji oraz czy kompresja danych została zastosowana na partycjach.

Określanie, czy tabela jest partycjonowana

Poniższe zapytanie zwraca co najmniej jeden wiersz, jeśli tabela PartitionTable jest partycjonowana lub jeśli jakiekolwiek indeksy nieklastrowane w tabeli są partycjonowane. Jeśli tabela nie jest partycjonowana i nie są partycjonowane żadne indeksy nieklastrowane w tabeli, nie są zwracane żadne wiersze.

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

Określanie wartości granic dla tabeli partycjonowanej

Poniższe zapytanie zwraca wartości granic dla każdej partycji w tabeli PartitionTable.

Zapytanie używa type kolumny w sys.indexes, aby zwrócić tylko informacje dotyczące klastrowanego indeksu tabeli lub tabeli podstawowej, jeśli tabela jest heapem. Aby uwzględnić wszystkie partycjonowane indeksy nieklastrowane w wynikach zapytania, usuń lub oznacz jako komentarz AND i.type <= 1 z zapytania.

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;

Określanie kolumny partycji dla tabeli partycjonowanej

Następujące zapytanie zwraca nazwę kolumny partycjonowania dla tabeli PartitionTable.

Zapytanie używa type kolumny w sys.indexes, aby zwrócić tylko informacje dotyczące klastrowanego indeksu tabeli lub tabeli podstawowej, jeśli tabela jest heapem. Aby uwzględnić wszystkie partycjonowane indeksy nieklastrowane w wynikach zapytania, usuń lub oznacz jako komentarz AND i.type <= 1 z zapytania.

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

Określ wiersze opisujące możliwy zakres wartości w każdej partycji

Poniższe zapytanie zwraca wiersze według partycji dla tabeli PartitionTablei opis "operatorów porównania" dla używanej funkcji partycji. Kwerenda oryginalna dostarczona przez Kalen Delaney.

Zapytanie używa type kolumny w sys.indexes, aby zwrócić tylko informacje dotyczące klastrowanego indeksu tabeli lub tabeli podstawowej, jeśli tabela jest heapem. Aby uwzględnić wszystkie partycjonowane indeksy nieklastrowane w wynikach zapytania, usuń lub oznacz jako komentarz AND i.type <= 1 z zapytania.

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;

W TextComparison kolumnie opisano możliwy zakres wartości w każdej partycji na podstawie definicji funkcji partycji. Oto widok przykładowych wyników zapytania:

SchemaName TableName IndexName NumerPartycji PartitionFunctionName rows Wartość graniczna Porównanie Tekstu
dbo Tabela Partycji PK_TabelaPartycji 1 PFTest 0 2022-03-01 00:00:00.000 >= Wartość minimalna i < 1 marca 2022 r. 12:00
dbo Tabela partycji PK_PartitionTable 2 PFTest 2 2022-04-01 00:00:00.000 >= 1 marca 2022 r. 12:00 i < 1 kwietnia 2022 r. 12:00
dbo Tabela partycji PK_PartitionTable 3 PFTest 1 2022-05-01 00:00:00.000 >= 1 kwietnia 2022 r. 12:00 i < 1 maja 2022 r. 12:00
dbo Tabela partycji PK_PartitionTable 4 PFTest 0 01.06.2022 00:00:00.000 >= 1 maja 2022 r. 12:00 i < 1 czerwca 2022 12:00
dbo Tabela partycji PK_PartitionTable 5 PFTest 1 2022-07-01 00:00:00.000 >= 1 czerwca 2022 12:00 i < 1 lipca 2022 12:00
dbo Tablica partycji PK_PartitionTable 6 PFTest 0 NULL >= 1 lipca 2022 r. 12:00 i < wartość maksymalna

Limitations

Dowiedz się więcej o ograniczeniach, a także zagadnieniach dotyczących wydajności partycjonowania w ograniczeniach