Wydajne przesyłania danych przy użyciu przełączania partycji

Partycjonowanie danych pozwala na zarządzanie i szybko i efektywnie dostępu podzbiór danych przy jednoczesnym zachowaniu spójności zbierania danych.Można użyć Transact-SQL Instrukcja ALTER tabela... przełącznik szybko i efektywnie transferu podzbiorów danych w następujący sposób:

  • Przypisywanie tabeli jako partycję do już istniejącej tabela partycjonowana.

  • Przełączanie partycję z jednej tabela partycjonowana.

  • Ponowne przypisywanie partycji do utworzenia jednej tabela.

Aby uzyskać informacje dotyczące partycji przełączanie pojęć, zobacz przykładowy kod, który implementuje przełączanie partycji zobacz Readme_SlidingWindow.

Ogólne wymagania dotyczące przełączania partycji

Po przeniesieniu na partycji danych nie jest fizycznie przeniesione, zmienia się tylko metadane dotyczące lokalizacji danych.Zanim użytkownik może przełączać się partycje, należy spełnić kilka ogólnych wymagań:

  • Obie tabele muszą istnieć przed wykonaniem operacji przełącznik.W tabeli, z którego przeniesiono partycji (urządzenie źródłowe tabeli) i w tabeli, która odbiera partycji (tabela miejsce docelowe) musi istnieć w bazie danych, przed przystąpieniem do operacji przełączania.

  • Odbiorczy partycji musi istnieć i musi być pusty.Niezależnie od tego, czy dodanie tabeli jako partycję do już istniejącego podzielony na partycje, tabeli lub przenoszenie partycji z jednej tabela partycjonowana, partycja, która odbiera nowej partycji musi istnieć i musi być pustą partycję.

  • Odbiorczy tabela nonpartitioned musi istnieć i musi być pusty. Jeśli są ponowne przypisywanie partycji, aby utworzyć jedną tabelę nonpartitioned, tabeli, która odbiera nowej partycji musi istnieć i musi być pusta tabela nonpartitioned.

  • Partycji musi znajdować się na tym samym kolumna. Przy przejściu partycję z jednej tabela partycjonowana, obie tabele muszą być podzielone na partycje na tym samym kolumna.

  • urządzenie źródłowe i tabele docelowe muszą współużytkować grupa plików, w tym samym. urządzenie źródłowe Tabeli docelowej z instrukcja ALTER tabela... SWITCH musi znajdować się w tym samym grupa plików oraz ich dużą wartość kolumny muszą być przechowywane w tych samych grupa plików.Odpowiednie indeksy, partycji indeksu lub partycje widok indeksowany musi również znajdować się główna w tym samym grupa plików.Jednak grupa plików, w mogą się różnić od odpowiednich tabel lub inne odpowiednie indeksy.

Aby uzyskać informacje na temat partycji przełączyć widoki indeksowane są zdefiniowane zobacz Partition Switching When Indexed Views Are Defined.

Wymagania dotyczące struktury indeksu i tabela

W uzupełnieniu do ogólnych wymagań powyżej zarówno urządzenie źródłowe tabela i tabela miejsce docelowe muszą mieć taką samą strukturę.Wymagania dotyczące struktury są następujące:

  • urządzenie źródłowe i miejsce docelowe tabel musi mieć tej samej kolumnie struktury i zamówienia.Tabele muszą mieć tych samych kolumn o takich samych nazwach, i wpisz długość, sortowanie, precyzja, skala, opcje dopuszczania wartości null i ograniczenia klucz podstawowy (jeśli istnieje), te same dane i mają te same ustawienia ANSI_NULLS i umieszczony w CUDZYSŁOWIE IDENTIFIER.Ponadto w tej samej kolejności, należy zdefiniować kolumny.Właściwość IDENTITY nie jest uważany za.

    Ostrzeżenie

    Przełączanie partycji można wprowadzać zduplikowane wartości w kolumnach IDENTITY tabela miejsce docelowe i odstępów w wartościach kolumn IDENTITY w urządzenie źródłowe tabela.Do sprawdzenia wartości tożsamości tabel i poprawić wartości, jeśli chcesz, należy użyć CHECKIDENT DBCC.

  • opcje dopuszczania wartości null partycjonowanie kolumny muszą być zgodne..urządzenie źródłowe I tabel docelowych muszą być albo wartość NULL lub NOT NULL.Jeśli jedna z tabel jest nie na partycje, opcje dopuszczania wartości null odpowiednich kolumn do partycjonowanie kolumnie innej tabeli musi być taka sama w kolumnie tabela partycjonowana.

    Important noteImportant Note:

    Firma Microsoft zaleca, aby określić NOT NULL na partycjonowanie kolumny tabel podzielonym na partycje.Zaleca się również określić NOT NULL na nonpartitioned tabel, które są źródła lub elementy docelowe dla operacji instrukcji ALTER tabela... przełącznik.Gdy nie są podzielone na partycje kolumny NULL, aby sprawdzić, czy wartości null unika się żadnych ograniczeń CHECK na podział kolumny.Wartości Null są zwykle umieszczane w partycji najbliżej lewej tabela partycjonowana.Brak ograniczenie NOT NULL urządzenie źródłowe i tabele docelowe mogą zakłócać proces wyboru ograniczenia, które są również zdefiniowani kolumna partycjonowanie na partycje przy przełączaniu partycjonowanie innej niż partycja najbliżej lewej, a kiedy opcja ANSI_NULLS bazy danych jest ustawiona na ON.

  • Kolumny obliczane muszą mieć taką samą składnię.Odpowiadających im kluczy partycji w przypadku kolumny obliczane, składni wyrażenia, które są definiowane ich kolumny obliczane są takie same, a oba obliczona kolumnach są zachowywane.

  • ROWGUID właściwości muszą być takie same. Kolumna w drugiej tabela, także zdefiniowana właściwość ROWGUID musi odpowiadać dowolnej kolumny, która jest zdefiniowana właściwość ROWGUID.

  • Kolumny XML musi mieć ten sam schemat. Any xml kolumny po trzeba wpisać dokładnie do tego samego zbioru schematu XML.

  • W wierszu ustawień tekst, ntext lub kolumny obrazu musi być taka sama. Aby uzyskać więcej informacji na temat tego ustawienia zobacz temat In-Row Data.

  • Tabele muszą mieć ten sam indeksów klastrowanych.Zarówno źródłowe i docelowe tabele muszą mieć ten sam indeksów klastrowanych, a indeksy nie może być wyłączone przed przełączeniem partycji.

  • Ponownego zbudowania indeksów nie klastrowanych musi być zdefiniowana i muszą być identyczne. Wszelkie ponownego zbudowania indeksów nie klastrowanych w są zdefiniowane w tabela miejsce docelowe są również zdefiniowani w tabela źródłowej i struktura identyczne z punktu widzenia unikatowości, subkluczs i kierunek sortowania (ASC lub DESC) dla każdego indeksu klucz kolumna.To wymaganie nie podlegają nieklastrowany indeksy, które są wyłączone.

Wymagania dotyczące ograniczenia

Przenieść partycje muszą być spełnione następujące warunki dodatkowe ograniczenia:

  • Sprawdź ograniczenia muszą być dokładnym odpowiednikiem lub mające zastosowanie do obu urządzenie źródłowe i miejsce docelowe. Ograniczenia wyboru, które są zdefiniowane w tabela miejsce docelowe muszą być zdefiniowane na urządzenie źródłowe tabela jako dokładne dopasowanie, albo jako stosowane (na przykład jako podzbiór) do ograniczeń CHECK tabela miejsce docelowe.

  • Ograniczenia dla kolumny int musi być taka sama lub podzbiór. Wszelkie ograniczenia CHECK na int kolumny w urządzenie źródłowe tabela musi odpowiadać lub istnieje jako część ograniczenia na int Kolumna tabela miejsce docelowe. Na przykład, jeśli w tabeli miejsce docelowe ma ograniczenie int kolumna Kolumna1, która określa, czy wartość Kolumna1 < 100, w odpowiedniej kolumnie Kolumna1 urządzenie źródłowe tabeli musi mieć takie same ograniczenia albo ograniczenie podzbioru umieszczony na wartości w tabeli miejsce docelowe, takie jak Kolumna1 < 90 urządzenie źródłowe tabeli. Ograniczenia CHECK, określające wielu kolumn należy zdefiniować przy użyciu tej samej składni.

  • Tabele nonpartitioned muszą mieć takie same ograniczenia, jak partycja docelowa. Jeśli dodajesz nonpartitioned tabeli jako partycja już istniejącej tabela partycjonowana, musi być ograniczenie zdefiniowane kolumna tabeli źródłowej, odpowiadający partycji klucz tabeli miejsce docelowe.Dzięki temu upewnić się, czy zakres wartości aktualizowanej wartości graniczne partycja docelowa.

  • Wartości granicznych partycji urządzenie źródłowe musi być w granicach partycja docelowa. Przy przejściu na partycję podzielonym na partycje tabeli do drugiej tabela partycjonowana, wartości granicznych partycji urządzenie źródłowe musi mieścić się w wartości graniczne partycja docelowa.Jeśli nie mieszczą się granicą wartości, musi być ograniczenie zdefiniowane w kluczu partycji urządzenie źródłowe tabela, aby upewnić się, że wszystkie dane w tabela jest dopasowywana do wartości graniczne partycji miejsce docelowe.

    Ostrzeżenie

    Należy unikać konwersja typu danych w definicjach ograniczenie.Ograniczenia przy użyciu danych bezpośrednia lub pośrednia wpisz konwersji zdefiniowanych na tabel, które są źródła partycji przełączanie może powodować instrukcji ALTER tabela... przełącznik nie powiedzie się.

  • urządzenie źródłowe i tabele docelowe muszą mieć takie same ograniczenia klucz obcy. Jeśli tabela miejsce docelowe ma wszystkie ograniczenia klucz obcy urządzenie źródłowe tabeli muszą mieć tych samych kluczy obcych, zdefiniowane na odpowiadające im kolumny, a te klucze obce musi odwoływać się tego samego klucz podstawowy, jak te w tabeli miejsce docelowe.Klucze obce z urządzenie źródłowe tabela nie może być zaznaczona. is_not_trusted (można wyświetlać w sys.foreign_keys widok katalogu), chyba że odpowiadający mu klucz obcy z tabela miejsce docelowe również jest oznaczony jako is_not_trusted.For more information about this setting, see Guidelines for Disabling Indexes and Constraints.SQL Server applies any CASCADE rules that are defined on the foreign keys of the target table to the newly moved partition.

Dodatkowe wymagania dotyczące przenoszenia partycji

Następujące dodatkowe wymagania muszą być spełnione również przenieść partycji:

  • Indeksy muszą być dostosowane do tabela partycji. Wszystkie indeksy na urządzenie źródłowe tabela muszą być dostosowane do urządzenie źródłowe tabela dowolny indeksów w tabela miejsce docelowe muszą być dostosowane do tabela miejsce docelowe.urządzenie źródłowe Tabelą i tabelą docelowym może być podzielone na zarówno partycje lub zarówno bez na partycje lub tylko jednej z tabel jest podzielony na partycje.Aby uzyskać więcej informacji na temat dostosowania indeksu zobacz Special Guidelines for Partitioned Indexes.

  • Dodatkowe ograniczenia i wymagania dotyczą urządzenie źródłowe tabel z widoków indeksowanych. Jeśli w tabela miejsce docelowe w instrukcja ALTER tabela … SWITCH definicja widok indeksowany, zobacz temat Partition Switching When Indexed Views Are Defined ograniczenia i przykłady.

  • Nie dozwolone indeksy pełnotekstowe. Na albo może być nie indeksy pełnotekstowe urządzenie źródłowe tabela lub w tabela miejsce docelowe.

  • Nie dopuszczalne w tabela miejsce docelowe indeksów XML. W tabela miejsce docelowe może być nie indeksów XML.

  • Nie klucze podstawowe klucz i obcych, gdy urządzenie źródłowe tabela ma klucz podstawowego. Może być nie aktywnego podstawowy klucz/relacja klucz obcy między urządzenie źródłowe tabela i w tabela miejsce docelowe, w którym urządzenie źródłowe tabela znajduje się klucz podstawowy.

  • Nie klucz podstawowy / zdefiniowanych kluczy obcych, jeśli tabela miejsce docelowe ma klucz obcy. Może być nie aktywnego podstawowy klucz/relacja klucza obcego między urządzenie źródłowe tabela i tabela miejsce docelowe, w których w tabela miejsce docelowe znajduje się klucz obcy.

  • Nie klucz obcy z innej tabela mogą odwoływać się do tabela źródłowej. urządzenie źródłowe Tabeli nie może odwoływać się klucz obcy w innej tabeli.

  • Zasady w sprawie urządzenie źródłowe lub tabela miejsce docelowe nie są dozwolone. Może być brak reguł zdefiniowanych w jednej urządzenie źródłowe tabela lub w tabela miejsce docelowe.Ograniczenia CHECK mogą być używane w urządzenie źródłowe i tabel.

    Uwaga

    Reguły są funkcji zachowania zgodności z poprzednimi wersjami.Preferowany implementacji jest użycie ograniczenia CHECK.Do wyboru ograniczenie ograniczenia zobacz Wymagania dotyczące ograniczenia we wcześniejszej części tego tematu.

  • urządzenie źródłowe i miejsce docelowe tabel nie muszą być replikowane. W tabela miejsce docelowe ani w tabela źródłowej, może być urządzenie źródłowe replikacja.

  • Musi mieć uprawnienia wymagane bazy danych przed przełącznikiem partycji. Ponieważ przełączanie partycja używa instrukcja ALTER tabela, musisz mieć uprawnienia wymagane bazy danych przy użyciu instrukcja ALTER tabela.Zestaw uprawnień nie musi być taka sama między urządzenie źródłowe tabela i tabela miejsce docelowe.

  • Wyzwalacze nie musi być uaktywniony przy przenoszeniu partycji. Nie wyzwalacze INSERT, UPDATE lub DELETE lub akcji kaskadowych aktywuje się przez przenoszenie tabela partycji, a nie jest wymagane w przypadku urządzenie źródłowe lub docelowe tabele, które mają zdefiniowane podobnie wyzwalaczy, aby przenieść partycji.

    Uwaga

    Podczas operacji ALTER tabela…SWITCH blokada schema-modify został nabyty w tabelach źródłowym i docelowym, aby upewnić się, że nie inne połączenia odwołania w tabelach podczas zmiany.Aby uzyskać więcej informacji na temat blokady Zobacz Tryby blokada.

Aby przenieść tabela partycji