Zmiana PARTYCJI funkcji (Transact-SQL)

Zmienia partycji funkcja przez dzielenie lub scalanie jego wartości granicznych.Wykonywanie funkcji ZMIENIA PARTYCJI, jednej partycji tabela lub indeksu, który używa funkcja partycji można podzielić na dwie partycje lub mniej partycji dwie partycje można scalić w jeden.

PrzestrogaPrzestroga

Więcej niż jednej tabela lub indeksu można użyć tej samej partycji funkcja.ZMIANY funkcji PARTYCJI wpływa na wszystkie z nich w ramach pojedynczej transakcji.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

ALTER PARTITION FUNCTION partition_function_name()
{ 
    SPLIT RANGE ( boundary_value )
  | MERGE RANGE ( boundary_value ) 
} [ ; ]

Argumenty

  • partition_function_name
    Jest to nazwa partycji funkcja ma zostać zmodyfikowana.

  • ZAKRES podziału ( boundary_value )
    Dodaje jedną partycję partycji funkcja.boundary_valueOkreśla zakres nowej partycji i musi różnić się od istniejących zakresów granicę partycji funkcja.Na podstawie boundary_value, Aparat baz danych dzieli jedną z istniejących zakresów na dwie.Z tych dwóch gdzie jeden nowy boundary_value znajduje się uważa się za nową partycję.

    Ważna informacjaWażne:

    grupa plików musi istnieć w trybie online i oznaczone przez schemat partycji , partycja funkcja dalej używane do przechowywania nowej partycji.Aplikacjami są przydzielane do partycji w instrukcjaSchemat tworzenia PARTYCJI.Schemat tworzenia PARTYCJI instrukcja przydziela aplikacjami więcej niż to konieczne (mniej partycje są tworzone w funkcji tworzenia PARTYCJI instrukcja niż aplikacjami je), następnie są Nieprzydzielona aplikacjami i jeden z nich jest oznaczony jako NASTĘPNY używane przez schemat partycji.Ta grupa plików będzie sprawować nowej partycji.Jeśli istnieją, że nie aplikacjami oznaczone dalej używane przez schemat partycji, należy użyć zmieniać schemat PARTYCJI albo dodać grupa plików, albo wyznaczyć istniejący, aby pomieścić nowej partycji.grupa plików , który posiada już partycji może być wyznaczony do przechowywania dodatkowe partycje.Ponieważ partycji funkcja mogą uczestniczyć w więcej niż jeden schemat partycji, używające partycji funkcja , do którego dodajesz partycji systemów partycji musi być używana NASTĘPNA grupa plików.W przeciwnym razie zmiany funkcji PARTYCJI nie powiedzie się z powodu błędu, który wyświetla schemat partycji lub systemów, których brakuje używana NASTĘPNA grupa plików.

  • Scalanie [zakresu ( boundary_value)]
    Krople partycji i scala żadnych wartości, które istnieją w partycji na jeden z pozostałych partycjach.ZAKRES (boundary_value) musi być istniejącą wartość granicy, do którego są scalane wartości z partycji porzucone.grupa plików przechowywanych w pierwotnie boundary_value jest usuwany z schemat partycji , chyba że jest używane przez pozostałe partycji lub jest oznaczony atrybutem dalej używane właściwość.Scalone partycji znajduje się w grupa plików , który pierwotnie przechowuje boundary_value.boundary_valuejest stała wyrażenie , które można odwoływać się do zmiennych (używając zmiennych typ zdefiniowany przez użytkownika ) lub funkcji (w tym funkcje zdefiniowane przez użytkownika).Nie można odwołać Transact-SQL wyrażenie.boundary_value* *należy albo dopasować lub być jawnie konwertowany na jego partycjonowanie kolumnatyp danych i nie może być obcięta podczas konwersji niejawnych w sposób, że rozmiar i skalę wartość nie jest zgodny z jego odpowiadające input_parameter_type.

Uwagi

Zmienianie funkcji PARTYCJI repartitions wszystkie tabele i indeksy, które należy użyć funkcja w jednym niepodzielny operacji.Ta operacja występuje w trybie offline i w zależności od fragment ponownego dzielenia na partycje, można jednak zasób-intensywnego.

Podział na dwie jednej partycji lub scalenie dwóch partycji w jedną tylko można zmieniać funkcji PARTYCJI.Aby zmienić sposób, w jaki tabela jest inaczej podzielony na partycje (na przykład z 10 partycje partycje 5), wykonywać dowolne z następujących opcji.W zależności od konfiguracja systemu te opcje mogą się różnić w zużycie zasób :

  • Tworzenie nowej tabela partycjonowana partycji żądanej funkcja, a następnie wstawić dane ze starej tabela do nowej tabela przy użyciu INSERT INTO...Wybierz z instrukcja.

  • Utworzyć podzielonym na partycje indeks klastrowany dla sterty.

    Ostrzeżenie

    Usuwanie partycji indeks klastrowany wyniki w stosie podzielonym na partycje.

  • Upuść i przebudować istniejący indeks partycjonowany za pomocą Transact-SQL instrukcja CREATE INDEX z istniejących UPUŚĆ = W klauzula.

  • Należy wykonać sekwencję instrukcji ALTER funkcji PARTYCJI.

Wszystkie aplikacjami, które wpływają zmiany funkcji PARITITION musi być w trybie online.

ZMIANY funkcji PARTYCJI nie powiedzie się, gdy wyłączone indeks klastrowany na wszystkie tabele, używające funkcjapartycji.

SQL Server 2008nie zapewnia obsługi replikacja dla partycji funkcjamodyfikowania.Bazy danych subskrypcja należy ręcznie zastosować zmiany do partycji funkcja w bazie danych publikacja .

Uprawnienia

Jeden z następujących uprawnień może służyć do wykonać zmieniać funkcji PARTYCJI:

  • ZMIEŃ DOWOLNE DATASPACE uprawnienia.To uprawnienie jest domyślnie członkami sysadmin stała rola serwera i db_owner i db_ddladmin ról stałej bazy danych.

  • FORMANT lub ZMIEŃ uprawnienie do bazy danych, w której została utworzona partycja funkcja .

  • FORMANT serwera lub ALTER DATABASE dowolny uprawnień na serwerze bazy danych, w której została utworzona partycja funkcja .

Przykłady

A.Podział na dwie partycje partycji tabela partycjonowana lub indeksie

Poniższy przykład tworzy partycję funkcja do dzielenia na czterech partycji tabela lub indeksu.ALTER PARTITION FUNCTIONDzieli jedną z partycji na dwa do utworzenia sumy pięciu partycji.

IF EXISTS (SELECT * FROM sys.partition_functions
    WHERE name = 'myRangePF1')
DROP PARTITION FUNCTION myRangePF1;
GO
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );
GO
--Split the partition between boundary_values 100 and 1000
--to create two partitions between boundary_values 100 and 500
--and between boundary_values 500 and 1000.
ALTER PARTITION FUNCTION myRangePF1 ()
SPLIT RANGE (500);

B.Scalanie dwóch partycji tabela partycjonowana w jedną partycję

Poniższy przykład tworzy tej samej partycji funkcja jak powyżej, a następnie scalenia dwóch partycji w jedną partycję łącznie trzy partycje.

IF EXISTS (SELECT * FROM sys.partition_functions
    WHERE name = 'myRangePF1')
DROP PARTITION FUNCTION myRangePF1;
GO
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );
GO
--Merge the partitions between boundary_values 1 and 100
--and between boundary_values 100 and 1000 to create one partition
--between boundary_values 1 and 1000.
ALTER PARTITION FUNCTION myRangePF1 ()
MERGE RANGE (100);