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


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 уже должен существовать в базе данных. Одна секция не может одновременно содержать файловые группы файлового потока и другие файловые группы.

ВСЕ
Указывает, что все секции сопоставляются с файловой группой, определяемой аргументом 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, CREATEPARTITION 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. См. пример ниже.

Разрешения

Для выполнения 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)  

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

Схема секционирования "myRangePS4" успешно создана. "test5fg" помечена как следующая используемая файловая группа в схеме секционирования "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] );  

Следующие шаги

Дополнительные сведения о секционировании таблиц и связанных с ними понятиях см. в следующих статьях: