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

Partycjonowanie danych umożliwia zarządzanie i szybko i efektywnie dostępu podzbiory danych przy jednoczesnym utrzymaniu integralność danych całego kolekcja.Można użyć Transact-SQL ALTER TABLE...Instrukcja SWITCH szybko i efektywnie transferu podzbiorów danych w następujący sposób:

  • Przypisywanie tabeli partycji do już istniejącego tabela partycjonowana.

  • Przełączanie z jednej partycji tabela partycjonowana do innego.

  • Ponowne przypisywanie do pojedynczej tabela partycji.

Aby uzyskać informacje dotyczące partycji przełączania pojęcia i zobacz ReadMe_SlidingWindow próbki.Informacje dla próbek, zobacz Zagadnienia dotyczące instalowania przykładów i przykładowych baz danych programu SQL Server.

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

Po przeniesieniu partycji danych nie jest przenoszony; tylko metadane dotyczące lokalizacji zmian danych.Aby można było przełączyć partycje, kilka ogólne wymagania muszą być spełnione:

  • Obie tabele muszą istnieć przed wykonaniem operacji przełącznik.Tabela, z którego przeniesione partycji ( źródło tabeli) i tabeli partycji (tabela miejsce docelowe) odbiera musi istnieć w bazie danych, przed wykonaniem operacji przełączania.

  • Odbiorczy partycji musi istnieć i musi być pusty.Czy chcesz dodać tabelę jako partycję do już istniejącego tabela partycjonowana, lub przeniesienia z jednej partycji tabela partycjonowana , partycja, która odbiera nowej partycji musi istnieć i musi być pustą partycję.

  • Odbiorczy nonpartitioned tabela musi istnieć i musi być pusty. Jeśli są ponowne przypisywanie partycji do jednej tabela nonpartitioned, tabela, która odbiera nowej partycji musi istnieć i musi być pustą tabela nonpartitioned.

  • Partycje musi być na tym samym kolumna. Przy przejściu z jednej partycji tabela partycjonowana do innej, obie tabele musi być podzielony na tej samej kolumna.

  • Źródła i miejsce docelowe tabele używały tej samej grupy plików. źródło i tabela miejsce docelowe ALTER tabela...Instrukcja SWITCH musi znajdować się w tym samym grupa plików, a ich dużej wartości kolumny muszą być przechowywane w tym samym grupa plików.Wszelkie odpowiednie indeksy indeks partycje lub partycji również muszą się znajdować w tym samym indeksowany widok grupa plików.Jednakże grupa plików może różnić się od odpowiednich tabel lub innych odpowiednich indeksów.

Aby uzyskać informacje dotyczące partycji przełączyć widoki indeksowane są zdefiniowane, zobacz Przełączanie partycji Widoki indeksowane są zdefiniowane..

Tabela i wymagania dotyczące struktury indeksu

W uzupełnieniu do wymogów ogólnych powyżej zarówno źródło tabela i tabela miejsce docelowe muszą mieć tę samą strukturę.Wymagania dotyczące struktury są następujące:

  • Źródła i miejsce docelowe tabel musi mieć tę samą strukturę kolumn i kolejność.Tabele muszą być te same kolumny o identycznych nazwach i te same dane, wpisz długość, sortowanie, precision, skali, opcje dopuszczania wartości null i ograniczeń klucza podstawowego (jeśli ma zastosowanie) i mają te same ustawienia ANSI_NULLS i identyfikator NOTOWANE.Ponadto w tej samej kolejności należy zdefiniować kolumny.Właściwość tożsamości nie są uwzględniane.

    PrzestrogaPrzestroga

    Przełączanie partycji można wprowadzać zduplikowane wartości w kolumnach tabela miejsce docelowe tożsamości i przerw w wartości kolumny tożsamości w źródło tabela.DBCC CHECKIDENT służy do sprawdzania tożsamości wartości tabel i poprawić te wartości, jeśli chcesz.

  • Nullability partycjonowanie kolumn muszą odpowiadać.źródło i tabel miejsce docelowe muszą być albo NULL lub NOT NULL.Jeśli w jednej z tabel nie jest partycją, opcje dopuszczania wartości null kolumna odpowiadająca dacie kolumna partycjonowania drugiej tabela muszą odpowiadać kolumnie tabela podzielonym na partycje.

    Ważna informacjaWażne:

    Zaleca się określenie nie NULL na kolumna partycjonowania tabel podzielonym na partycje.Zaleca się również określić NOT NULL na nonpartitioned tabel, które są źródła lub celów ALTER TABLE...Operacje przełącznika.Kiedy podzielonym na partycje kolumny nie są wartości NULL, wszelkie ograniczenia CHECK na partycjonowanie kolumny nie są zmuszani do sprawdzania wartości null.Wartości Null są zazwyczaj umieszczane w partycji lewej tabela partycjonowana.Brak ograniczenie NOT NULL dla źródła i miejsce docelowe tabel mogą kolidować z wszelkich ograniczeń CHECK, są również zdefiniowani kolumna partycjonowanie podczas przełączania partycjonowanie innej niż partycja lewej i kiedy ANSI_NULLS opcji bazy danych ustawiono na.

  • Obliczane kolumny muszą mieć tę samą składnię.Jeśli kolumny obliczane odpowiadających im kluczy partycji, składni wyrażeń, które są definiowane ich kolumny obliczane są takie same i obliczone obie kolumny są zachowywane.

  • ROWGUID właściwości muszą być takie same. kolumna w tabela, zdefiniowanego właociwooć ROWGUID musi odpowiadać dowolnej kolumna, która jest zdefiniowana właściwość ROWGUID.

  • Kolumny XML musi mieć tego samego schematu. Dowolny xml kolumny muszą przez wpisane do tej samej XML schematu kolekcja.

  • Ustawienia tekst, ntext lub image kolumn w wierszu musi być taka sama. Aby uzyskać więcej informacji na temat tego ustawienia, zobacz W wierszu danych.

  • Tabele muszą być tego samego indeksy klastrowane.Zarówno źródło i miejsce docelowe tabel musi mieć ten sam indeksy klastrowane i indeksy nie może być wyłączone przed przełączeniem partycji.

  • Zbudowania indeksów nie klastrowanych muszą być zdefiniowane i muszą być identyczne. Zbudowania indeksów, które są zdefiniowane w tabela miejsce docelowe, również są definiowane na źródło tabela i struktura identycznie unikatowości, podkluczy i kierunek sortowania (ASC lub DESC) dla każdej kolumna kluczy indeksu.Zbudowania indeksów, które są wyłączone są zwolnieni z tego wymogu.

Wymagania dotyczące ograniczenia

Aby przenieść partycje muszą być spełnione następujące wymagania dodatkowe ograniczenia:

  • Sprawdź ograniczenia muszą być dokładne dopasowanie lub mające zastosowanie do obu źródło i miejsce docelowe. Ograniczenia wyboru, które są zdefiniowane w tabela miejsce docelowe muszą być zdefiniowane na źródło tabela jako dokładnie lub w stosownych przypadkach (na przykład jako podzbiór) do ograniczenia CHECK tabela miejsce docelowe.

  • Ograniczenia dla kolumny int musi być taka sama lub podzbiór. Wszystkie ograniczenia, na int kolumn w źródło tabela muszą odpowiadać lub istnieje jako podzbiór ograniczenia na int kolumna tabela miejsce docelowe.For example, if the target table has a constraint on an int column Column1 that specifies Column1 < 100, the corresponding column Column1 of the source table must either have the same constraint or a subset of the constraint placed on values in the target table, such as Column1 < 90 of the source table.Ograniczenia CHECK, które określają wiele kolumn muszą być zdefiniowane przy użyciu tej samej składni.

  • Nonpartitioned tabele muszą mieć te same ograniczenia jako partycja docelowa. Jeśli dodajesz nonpartitioned tabela jako partycję do już istniejącej tabela podzielonym na partycje, musi być ograniczenie zdefiniowane kolumna źródło tabela, która odpowiada kluczowi partycji tabela miejsce docelowe.Dzięki temu upewnić się, że zakres wartości aktualizowanej wartości graniczne partycja docelowa.

  • Wartości graniczne partycji źródło musi być w granicach partycja docelowa. Jeśli przełączasz partycji tabela partycjonowana do innej tabeli podzielonym na partycje, wartości graniczne partycji źródło musi mieścić się w wartości graniczne partycja docelowa.Jeśli wartości graniczne nie pasują, musi istnieć ograniczenie zdefiniowane w kluczu partycji tabela źródłowej, upewnij się, że wszystkie dane w tabela jest dopasowywana do wartości graniczne partycja docelowa.

    PrzestrogaPrzestroga

    Należy unikać konwersja typu danych w definicjach ograniczenie.Ograniczenia danych bezpośrednia lub pośrednia wpisz konwersji, które są zdefiniowane w tabel partycji przełączania źródła może spowodować ALTER TABLE...Przełącznik nie powiedzie się.

  • Źródła i miejsce docelowe tabel musi mieć te same ograniczenia klucza OBCEGO. Jeśli tabela miejsce docelowe ma ograniczenia klucz OBCEGO, źródło tabela musi mieć zdefiniowany w odpowiednich kolumnach tego samego kluczy obcych i klucze obce odwołanie tego samego klucz podstawowego, jak tabela miejsce docelowe.Kluczy obcych z źródło tabela nie można oznaczyć is_not_trusted (widoczny w sys.foreign_keys wykazu Widok), chyba że odpowiedniego klucz obcy tabela miejsce docelowe jest również oznaczony is_not_trusted.For more information about this setting, see Wytyczne dotyczące wyłączania indeksy i ograniczenia.SQL Server applies any CASCADE rules that are defined on the foreign keys of the target table to the newly moved partition.

Dodatkowe wymagania dla przenoszenia partycji

Następujące dodatkowe wymagania muszą być spełnione także przenieść partycje:

  • Indeksy muszą być dostosowane w tabela partycji. Wszystkie indeksy w źródło tabela muszą być dostosowane do źródło tabela żadnych indeksów w tabela miejsce docelowe muszą być wyrównane do tabela miejsce docelowe.Źródło tabela oraz miejsce docelowe tabela może być zarówno na partycje, lub obu niepodzielonego na partycje lub tylko jednej z tabelas jest podzielony na partycje.Więcej informacji o wyrównanie indeksu, zobacz Specjalne wytyczne dla indeksów podzielonym na partycje.

  • Dodatkowe ograniczenia i wymagania stosuje się do źródło tabele, widoki indeksowane. Jeśli w tabela miejsce docelowe w instrukcji ALTER tabela … Definicja indeksowany widok ma instrukcja SWITCH, zobacz Przełączanie partycji Widoki indeksowane są zdefiniowane. dla ograniczenia i przykłady.

  • Nie dozwolone indeksy pełnotekstowe. Albo może być nie indeksy pełnotekstowe źródło tabela lub w tabela miejsce docelowe.

  • Indeksy XML nie dozwolone w tabela miejsce docelowe. W tabela miejsce docelowe może być żadnych indeksów XML.

  • Podstawowy/klucz obcy kluczy zdefiniowanych, jeśli źródło tabela ma klucz podstawowy. Może to być nie active podstawowy klucz/relacji klucz obcy między źródło tabeli i tabela miejsce docelowe, w której źródło zostały przedstawione w tabeli klucza podstawowego.

  • Nie klucz podstawowy/ zdefiniowanych kluczy obcych, jeśli tabela miejsce docelowe ma klucz obcy. Może to być nie active podstawowy klucz/relacji klucz obcy między źródło tabela i w którym tabela miejsce docelowe przechowuje klucz obcy tabela miejsce docelowe.

  • Nie klucz obcy z innej tabela można odwoływać się źródło tabela. źródło tabela nie można odwoływać się za pomocą klucz obcy w innej tabela.

  • Zasady w sprawie źródło lub tabela miejsce docelowe nie są dozwolone. Brak reguł Definicja albo może być źródło tabela lub w tabela miejsce docelowe.Sprawdź ograniczenia mogą być używane na źródła i miejsce docelowe tabele.

    Ostrzeżenie

    Reguły są funkcji zgodności z poprzednimi wersjami.Preferowany implementacji jest użycie ograniczenia CHECK.Dla ograniczenia ograniczenie wyboru, zobacz Ograniczenie wymagań wcześniej w tym temacie.

  • Źródła i miejsce docelowe tabel nie muszą być replikowane. Ani źródło może być tabela, ani tabeli miejsce docelowe źródłos replikacja.

  • Uprawnienia wymagane bazy danych przed przełącznikiem partycji. Ponieważ przełączanie partycji używa instrukcja ALTER TABLE, musi mieć uprawnienia wymagane bazy danych, związane z instrukcja ALTER TABLE.Zestaw uprawnień nie ma taki sam między źródło tabela i tabela miejsce docelowe.

  • Wyzwalacze nie należy uaktywnić podczas przenoszenia partycji. Nie Wyzwalacze INSERT, UPDATE lub DELETE lub kaskadowych akcje są aktywowane poprzez przenoszenie tabela partycji i nie jest wymagane dla źródła lub miejsce docelowe tabele zdefiniowane analogicznie wyzwalaczy, aby przenieść partycje.

    Ostrzeżenie

    Podczas zmiany substancjiPrzełącznik operacji blokadę schema-modify został nabyty zarówno źródło i miejsce docelowe tabel, aby upewnić się, że połączenia nie odwołują się do tabel podczas zmiany.Aby uzyskać więcej informacji na temat blokady Zobacz Tryby Lock.

Aby przenieść tabela partycji