Udostępnij za pośrednictwem


CREATE funkcja partycji (języka Transact-SQL)

Tworzy w bieżącej bazie danych funkcję, która przyporządkowuje wiersze tabeli lub indeksu do partycji na podstawie wartości znajdujących się w wybranej kolumnie.Użycie instrukcji CREATE PARTITION FUNCTION jest pierwszym etapem procesu tworzenia partycjonowanej tabeli lub indeksu.

Topic link iconKonwencje składni języka Transact-SQL

CREATE PARTITION FUNCTION partition_function_name ( input_parameter_type )
AS RANGE [ LEFT | RIGHT ] 
FOR VALUES ( [ boundary_value [ ,...n ] ] ) 
[ ; ]

Argumenty

  • partition_function_name
    Zwraca informacje o stronie i liczba wierszy dla każdej partycji w bieżącej bazie danych.Nazwy funkcja partycji musi być unikatowa w bazie danych i są zgodne z zasadami identyfikatory.

  • input_parameter_type
    Typ danych kolumny używanej do partycjonowania.Kolumnami partycjonowania mogą być kolumny ze wszystkimi typami danych poza następującymi: text, ntext, image, xml, timestamp, varchar(max), nvarchar(max), varbinary(max), aliasy oraz typy danych środowiska uruchomieniowego języka wspólnego zdefiniowane przez użytkownika.

    IDENTYFIKATOR stosu lub indeksu partycji jest częścią.

  • boundary_value
    Określa wartości graniczne dla każdej partycji tabela partycjonowana lub indeks, który używa partition_function_name. Jeśli boundary_value jest pusta, funkcja partycji mapuje całej tabela lub przy użyciu indeksu partition_function_name na jednej partycji. in_row_data_page_count

    boundary_value Liczba stron używany do przechowywania danych w wierszu w tej partycji.Jeśli partycja jest częścią stosu, wartość jest liczbą stron danych w stosie.It cannot reference Transact-SQL expressions.boundary_value must either match or be implicitly convertible to the data type supplied in input_parameter_type, and cannot be truncated during implicit conversion in a way that the size and scale of the value does not match that of its corresponding input_parameter_type.

    Uwaga

    Jeśli parametr boundary_value zawiera literały typu datetime lub smalldatetime, są one badane z założeniem, że obowiązuje język sesji us_english.To zachowanie nie jest już obsługiwane.Aby mieć pewność, że definicja funkcji partycji działa w oczekiwany sposób dla wszystkich języków sesji, zalecamy używanie wartości stałych interpretowanych tak samo dla wszystkich ustawień języka, np. formatu rrrmmdd, albo jednoznaczne konwertowanie literałów na żądany styl.Aby uzyskać więcej informacji, zobacz Writing International Transact-SQL Statements.W celu ustalenia języka, w jakim odbywa się sesja na serwerze, należy wykonać instrukcję SELECT @@LANGUAGE.

  • ...n
    Liczba wartości podanych przez parametr boundary_value. Nie może przekroczyć 999.Liczba tworzonych partycji wynosi n + 1.Warto‎ści nie muszą być wprowadzone z zachowaniem kolejności.Jeśli są nieuporządkowane, Database Engine posortuje je, utworzy funkcję, po czym zwróci ostrzeżenie, że wartości zostały podane w niewłaściwej kolejności.Jeśli parametr n zawiera powtarzające się wartości, aparat bazy danych zwraca komunikat o błędzie.

  • PO LEWEJ STRONIE | RIGHT
    Określa, do której strony każdego interwału wartości granicznych — lewej czy prawej — należy boundary_value [ ,... n ] belongs, when interval values are sorted by the Database Engine in ascending order from left to right.Jeśli opcja nie zostanie określona, obowiązuje wartość LEFT.Aby uzyskać więcej informacji, zobacz Przykłady.

Remarks

Zakres funkcji partycji jest ograniczony do bazy danych, w której funkcja została utworzona.W bazie funkcje partycji są umieszczone w przestrzeni nazw innej niż pozostałe funkcje.

Wszystkie wiersze, które w kolumnach partycjonowania zawierają wartość null, są umieszczane w partycji wysuniętej najbardziej na lewo, chyba że jako wartość graniczną określono NULL oraz zaznaczono opcję RIGHT.W takim przypadku partycja wysunięta najbardziej na lewo jest pusta, a wartości NULL są umieszczane w następnej partycji.

Uprawnienia

used_page_count

  • Indeksy przestrzennyTo uprawnienie domyślnie członkowie sysadmin Rola serwera i db_owner and db_ddladmin stałe role bazy danych.

  • Uprawnienie CONTROL lub ALTER wobec bazy danych, w której jest tworzona funkcja partycji.

  • reserved_page_count

Przykłady

A.Całkowita liczba stron zarezerwowane dla partycji.

Poniższa funkcja partycjonowania spowoduje podzielenie tabeli lub indeksu na cztery partycje.

Następujące tabela pokazuje, jak tabela, która korzysta z tego funkcja partycjonowanie na kolumna partycjonowania Col1 Czy można podzielić na partycje.

Partycji

1

2

3

4

Values

col1 <= 1

col1 > 1 AND col1 <= 100

col1 > 100 AND col1 <=1000

col1 > 1000

B.Tworzenie funkcji partycji RANGE RIGHT dla kolumny z danymi typu int

The following partition function uses the same values for boundary_value [ ,... n ] as the previous example, except it specifies RANGE RIGHT.

Następujące tabela pokazuje, jak tabela, która korzysta z tego funkcja partycjonowanie na kolumna partycjonowania Col1 Czy można podzielić na partycje.

Partycji

1

2

3

4

Values

col1 < 1

col1 >= 1 AND col1 < 100

col1 >= 100 AND col1 < 1000

col1 >= 1000

C.Tworzenie funkcji partycji RANGE RIGHT dla kolumny z danymi typu datetime

Aby uzyskać więcej informacji na temat uprawnień w widokach dynamicznego zarządzania Zobacz datetime.

W poniższej tabela przedstawiono sposób funkcjonowania tabela lub indeks, który korzysta z tej partycjonowanie na kolumna partycjonowania datecol Czy można podzielić na partycje.

Partycji

1

2

...

11

12

Values

datecol < February 1, 2003

datecol >= February 1, 2003 AND datecol < March 1, 2003

datecol >= November 1, 2003 AND col1 < December 1, 2003

col1 >= December 1, 2003

D.Zwracanie sumy używane strony oraz całkowitą liczbę wierszy dla stosu lub indeks klastrowany

Poniższa funkcja partycjonowania spowoduje podzielenie tabeli lub indeksu na cztery partycje.

Następujące tabela pokazuje, jak tabela, która korzysta z tego funkcja partycjonowanie na kolumna partycjonowania Col1 Czy można podzielić na partycje.

Partycji

1

2

3

4

Values

col1 < EX...

col1 >= EX AND col1 < RXE...

col1 >= RXE AND col1 < XR...

col1 >= XR