Udostępnij za pośrednictwem


CREATE PARTITION SCHEME (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Tworzy schemat w bieżącej bazie danych, który mapuje partycje partycjonowanej tabeli lub indeksu na co najmniej jedną grupę plików. Wartości mapujące wiersze tabeli lub indeksu na partycje są określone w funkcji partycji. Przed utworzeniem schematu partycji należy najpierw utworzyć funkcję partycji CREATE PARTITION FUNCTION.

Nuta

W usłudze Azure SQL Database obsługiwane są tylko podstawowe grupy plików. Dowiedz się więcej o grupach plików i strategiach partycjonowania w grupach plików .

Transact-SQL konwencje składni

Składnia

CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ , ...n ] )
[ ; ]

Argumenty

partition_scheme_name

Nazwa schematu partycji. Nazwy schematów partycji muszą być unikatowe w bazie danych i być zgodne z regułami dotyczącymi identyfikatorów .

partition_function_name

Nazwa funkcji partycji przy użyciu schematu partycji. Partycje utworzone przez funkcję partycji są mapowane na grupy plików określone w schemacie partycji. partition_function_name musi już istnieć w bazie danych. Pojedyncza partycja nie może zawierać grup plików FILESTREAM i innych niż FILESTREAM.

CAŁY

Określa, że wszystkie partycje mapuje na grupę plików podaną w file_group_namelub do podstawowej grupy plików, jeśli określono [PRIMARY]. Jeśli określono ALL, można określić tylko jeden file_group_name.

file_group_name | [ PRIMARY ] [ , ...n ]

Określa nazwy grup plików do przechowywania partycji określonych przez partition_function_name. file_group_name musi już istnieć w bazie danych.

Jeśli [PRIMARY] jest określona, partycja jest przechowywana w podstawowej grupie plików. Jeśli określono ALL, można określić tylko jeden file_group_name. Partycje są przypisywane do grup plików, począwszy od partycji 1, w kolejności, w której grupy plików są wymienione w [, ...<n>]. Ten sam file_group_name można określić więcej niż jeden raz w [, ...<n>]. Jeśli n nie wystarcza do przechowywania liczby partycji określonych w partition_function_name, CREATE PARTITION SCHEME kończy się niepowodzeniem z powodu błędu.

Jeśli partition_function_name generuje mniej partycji niż grupy plików, pierwsza nieprzypisana grupa plików zostanie oznaczona NEXT USED, a komunikat informacyjny wyświetla nazwę NEXT USED filegroup. Jeśli określono ALL, jedyny file_group_name zachowuje jego właściwość NEXT USED dla tego partition_function_name. Grupa plików NEXT USED otrzymuje dodatkową partycję, jeśli zostanie utworzona w instrukcji ALTER PARTITION FUNCTION. Aby utworzyć więcej nieprzypisanych grup plików do przechowywania nowych partycji, użyj ALTER PARTITION SCHEME.

Po określeniu podstawowej grupy plików w <file_group_name> [, ...<n>]PRIMARY muszą być rozdzielane, tak jak w [PRIMARY], ponieważ jest to słowo kluczowe.

Tylko PRIMARY jest obsługiwana w przypadku usługi SQL Database. Zobacz przykład E.

Uprawnienia

Do wykonania CREATE PARTITION SCHEMEmożna użyć następujących uprawnień:

  • ALTER ANY DATASPACE uprawnienia. To uprawnienie domyślnie dotyczy członków sysadmin stałej roli serwera oraz db_owner i db_ddladmin stałych ról bazy danych.

  • CONTROL lub ALTER uprawnienia do bazy danych, w której jest tworzony schemat partycji.

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

Przykłady

A. Tworzenie schematu partycji, który mapuje każdą partycję na inną grupę plików

Poniższy przykład tworzy funkcję partycji, aby podzielić tabelę lub indeks na cztery partycje. Następnie zostanie utworzony schemat partycji określający grupy plików do przechowywania każdej z czterech partycji. W tym przykładzie przyjęto założenie, że grupy plików już istnieją w bazie danych.

CREATE PARTITION FUNCTION myRangePF1(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);

Partycje tabeli korzystającej z funkcji partycji myRangePF1 w kolumnie partycjonowania col1 zostaną przypisane, jak pokazano w poniższej tabeli.

Grupa plików Partycja Wartości
test1fg 1 col1 <= 1
test2fg 2 col1 > 1 AND col1<= 100
test3fg 3 col1 > 100 AND col1<= 1000
test4fg 4 col1 > 1000

B. Tworzenie schematu partycji, który mapuje wiele partycji na tę samą grupę plików

Jeśli wszystkie partycje są mapowania na tę samą grupę plików, użyj słowa kluczowego ALL. Ale jeśli wiele, ale nie wszystkie, partycje są mapowane na tę samą grupę plików, nazwa grupy plików musi być powtarzana, jak pokazano w poniższym przykładzie.

CREATE PARTITION FUNCTION myRangePF2(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS2
AS PARTITION myRangePF2
TO (test1fg, test1fg, test1fg, test2fg);

Partycje tabeli korzystającej z funkcji partycji myRangePF2 w kolumnie partycjonowania col1 zostaną przypisane, jak pokazano w poniższej tabeli.

Grupa plików Partycja Wartości
test1fg 1 col1 <= 1
test1fg 2 col1 > 1 AND col1<= 100
test1fg 3 col1 > 100 AND col1<= 1000
test2fg 4 col1 > 1000

C. Tworzenie schematu partycji, który mapuje wszystkie partycje na tę samą grupę plików

Poniższy przykład tworzy tę samą funkcję partycji co w poprzednich przykładach, a schemat partycji jest tworzony, który mapuje wszystkie partycje na tę samą grupę plików.

CREATE PARTITION FUNCTION myRangePF3(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS3
AS PARTITION myRangePF3
ALL TO (test1fg);

D. Tworzenie schematu partycji określającego grupę plików NEXT USED

Poniższy przykład tworzy tę samą funkcję partycji, co w poprzednich przykładach. Tworzy również schemat partycji, który wyświetla więcej grup plików niż istnieją partycje utworzone przez skojarzą funkcję partycji.

CREATE PARTITION FUNCTION myRangePF4(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS4
AS PARTITION myRangePF4
TO (test1fg, test2fg, test3fg, test4fg, test5fg);

Wykonanie instrukcji zwraca następujący komunikat.

Partition scheme 'myRangePS4' has been created successfully. 'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'.

Jeśli funkcja partycji myRangePF4 zostanie zmieniona w celu dodania partycji, grupa plików test5fg otrzyma nowo utworzoną partycję.

E. Tworzenie schematu partycji tylko w usłudze PRIMARY

W usłudze Azure SQL Database dodawanie plików i grup plików nie jest obsługiwane, ale partycjonowanie tabel jest obsługiwane przez partycjonowanie tylko w grupie plików PRIMARY.

Poniższy przykład tworzy funkcję partycji, aby podzielić tabelę lub indeks na cztery partycje. Następnie zostanie utworzony schemat partycji określający, że wszystkie partycje są tworzone w grupie plików PRIMARY.

CREATE PARTITION FUNCTION myRangePF1(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ([PRIMARY]);