Поделиться через


CREATE PARTITION SCHEME (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Создает схему в текущей базе данных, которая сопоставляет секции секционированной таблицы или индекса одной или нескольких файловых групп. Значения, сопоставляющие записи таблицы или индекса в секциях, указываются в функции секционирования. Прежде чем создавать схему секционирования, сначала в инструкции CREATE PARTITION FUNCTION следует создать функцию секционирования.

Примечание.

В Базе данных SQL Azure поддерживаются только основные файловые группы. Дополнительные сведения о файловых группах и стратегиях секционирования см. в разделе Файловые группы.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

partition_scheme_name

Имя схемы секционирования. Имена схемы секционирования должны быть уникальными в пределах базы данных и соответствовать правилам для идентификаторов.

partition_function_name

Имя функции секции с помощью схемы секционирования. Секции, созданные функцией секционирования, сопоставляются с файловыми группами, заданными в схеме секционирования. Аргумент partition_function_name уже должен существовать в базе данных. Отдельная секция не может содержать как FILESTREAM, так и файловые группы, отличные от FILESTREAM.

ВСЕ

Указывает, что все секции сопоставляются с файловой группой, предоставленной в file_group_name, или основной файловой группе, если указана [PRIMARY]. Если указан ALL, можно указать только один file_group_name.

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

Указывает имена файловых групп, содержащих секции, указываемые аргументом partition_function_name. Аргумент file_group_name уже должен существовать в базе данных.

Если указана [PRIMARY], раздел хранится в основной файловой группе. Если указан ALL, можно указать только один file_group_name. Секции назначаются файловой группе, начиная с раздела 1, в том порядке, в котором файловые группы перечислены в [, ...<n>]. Один и тот же file_group_name можно указать несколько раз в [, ...<n>]. Если n недостаточно для хранения количества секций, указанных в partition_function_name, CREATE PARTITION SCHEME завершается ошибкой.

Если partition_function_name создает меньше секций, чем файловые группы, первая неназначаемая файловая группа помечается NEXT USED, а информационное сообщение отображает именование файловой группы NEXT USED. Если указан ALL, единственным file_group_name сохраняется его свойство NEXT USED для этого partition_function_name. Файловая группа NEXT USED получает дополнительную секцию, если она создана в инструкции ALTER PARTITION FUNCTION. Чтобы создать более неназначенные файловые группы для хранения новых разделов, используйте ALTER PARTITION SCHEME.

При указании основной файловой группы в <file_group_name> [, ...<n>]необходимо разделить PRIMARY, как в [PRIMARY], так как это ключевое слово.

Для базы данных SQL поддерживается только PRIMARY. См. пример E.

Разрешения

Для выполнения CREATE PARTITION SCHEMEможно использовать следующие разрешения:

  • разрешение ALTER ANY DATASPACE. Это разрешение назначено по умолчанию членам предопределенной роли сервера sysadmin и предопределенных ролей базы данных db_owner и db_ddladmin .

  • CONTROL или ALTER разрешение на базу данных, в которой создается схема секционирования.

  • CONTROL SERVER или ALTER ANY DATABASE разрешение на сервере базы данных, в которой создается схема секционирования.

Примеры

А. Создание схемы секционирования, которая сопоставляет каждую секцию с другой файловой группой

В следующем примере создается функция секционирования для разделения таблицы или индекса на четыре секции. Затем создается схема секционирования, которая задает файловые группы, каждая из которых должна содержать одну из четырех секций. В примере предполагается, что в базе данных уже существуют файловые группы.

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);

Секции таблицы, использующая функцию секционирования myRangePF1 для столбца секционирования col1, будут назначены, как показано в следующей таблице.

Файловая группа Секция Значения
test1fg 1 col1 <= 1
test2fg 2 col1 > 1 AND col1<= 100
test3fg 3 col1 > 100 AND col1<= 1000
test4fg 4 col1 > 1000

B. Создание схемы секционирования, которая сопоставляет несколько секций с одной файловой группой

Если все секции сопоставляют с одной файловой группой, используйте ключевое слово ALL. Но если сопоставление нескольких секций, но не всех, выполняется к одной файловой группе, то имя файловой группы должно быть повторено, как показано в следующем примере.

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);

Секции таблицы, использующая функцию секционирования myRangePF2 для столбца секционирования col1, будут назначены, как показано в следующей таблице.

Файловая группа Секция Значения
test1fg 1 col1 <= 1
test1fg 2 col1 > 1 AND col1<= 100
test1fg 3 col1 > 100 AND col1<= 1000
test2fg 4 col1 > 1000

В. Создание схемы секционирования, которая сопоставляет все секции с одной файловой группой

В следующем примере создается такая же функция секционирования, что и в предыдущих примерах, и далее создается схема секционирования, которая сопоставляет все секции с одной и той же файловой группой.

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. Создание схемы секционирования, указывающей файловую группу NEXT USED

В следующем примере создается та же функция секционирования, что и в предыдущих примерах. Он также создает схему секционирования, которая содержит больше файловых групп, чем секции, созданные связанной функцией секции.

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);

При выполнении инструкции выводится следующее сообщение.

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

Если функция секционирования myRangePF4 изменяется для добавления секции, файловая группа test5fg получает вновь созданную секцию.

Е. Создание схемы секционирования только в PRIMARY

В Базе данных SQL Azure добавление файлов и групп файлов не поддерживается, но секционирование таблиц поддерживается секционированием только в файловой группе PRIMARY.

В следующем примере создается функция секционирования для разделения таблицы или индекса на четыре секции. Затем создается схема секционирования, указывающая, что все секции создаются в файловой группе 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]);