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 SCHEME
moż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
lubALTER
uprawnienia do bazy danych, w której jest tworzony schemat partycji.CONTROL SERVER
lubALTER 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]);