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


Изменение схемы секционирования

Применимо к:SQL ServerAzure SQL База данныхAzure SQL Управляемый экземплярSQL База данных в Microsoft Fabric

Можно изменить схему секционирования, назначив файловую группу для хранения следующей секции, которая добавляется в секционированную таблицу с помощью SQL Server Management Studio (SSMS) или Transact-SQL. Это делается путем присваивания файловой группе свойства NEXT USED.

Можно присвоить свойство NEXT USED пустой файловой группе или группе, уже хранящей секцию. Другими словами, файловая группа может содержать несколько секций. Узнайте больше о файловых группах и стратегиях секционирования в файловых группах.

Limitations

Все файловые группы, на которые действует ALTER PARTITION SCHEME, должны быть в сети.

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

Секционирование таблиц доступно в выделенных пулах SQL в Azure Synapse Analytics с некоторыми различиями синтаксиса. Дополнительные сведения см. в разделе Секционирование таблиц в выделенном пуле SQL.

Permissions

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

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

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

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

Изменение схемы секционирования с помощью Transact-SQL

В примере используется образец базы данных AdventureWorks.

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить.

    Note

    Для простоты этот код создает новые файловые группы, но не назначает им файлы. Это позволяет провести демонстрацию изменения схемы секционирования, но не является полным примером настройки секционированного объекта. Примеры создания секционированных таблиц и индексов см. в разделе "Создание секционированных таблиц и индексов".

    USE AdventureWorks2022;  
    GO
    -- add five new filegroups to the AdventureWorks2022 database  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP test1fg;  
    GO  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP test2fg;  
    GO  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP test3fg;  
    GO  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP test4fg;  
    GO  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP test5fg;  
    GO 
    
    -- if the "myRangePF1" partition function and the "myRangePS1" partition scheme exist,  
    -- drop them from the AdventureWorks2022 database  
    IF EXISTS (SELECT * FROM sys.partition_functions  
        WHERE name = 'myRangePF1')  
    DROP PARTITION FUNCTION myRangePF1;  
    GO  
    IF EXISTS (SELECT * FROM sys.partition_schemes  
        WHERE name = 'myRangePS1')  
    DROP PARTITION SCHEME myRangePS1;  
    GO  
    
    -- create the new partition function "myRangePF1" with four partition groups  
    CREATE PARTITION FUNCTION myRangePF1 (int)  
    AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );  
    GO  
    
    -- create the new partition scheme "myRangePS1"that will use   
    -- the "myRangePF1" partition function with five file groups.  
    -- The last filegroup, "test5fg," will be kept empty but marked  
    -- as the next used filegroup in the partition scheme.  
    CREATE PARTITION SCHEME myRangePS1  
    AS PARTITION myRangePF1  
    TO (test1fg, test2fg, test3fg, test4fg, test5fg);  
    GO  
    
    --Split "myRangePS1" between boundary_values 100 and 1000  
    --to create two partitions between boundary_values 100 and 500  
    --and between boundary_values 500 and 1000.  
    ALTER PARTITION FUNCTION myRangePF1 ()  
    SPLIT RANGE (500);  
    GO  
    
    -- Allow the "myRangePS1" partition scheme to use the filegroup "test5fg"  
    -- for the partition with boundary_values of 100 and 500  
    ALTER PARTITION SCHEME myRangePS1  
    NEXT USED test5fg;  
    GO  
    

Удаление схемы секционирования с помощью SSMS

  1. В обозреватель объектов подключитесь к целевой базе данных.

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

  3. Выберите знак плюса, чтобы развернуть папку хранилища .

  4. Выберите знак "плюс", чтобы развернуть папку "Схемы секционирования ".

  5. Щелкните правой кнопкой мыши схему секционирования, которую нужно удалить, и выберите пункт Удалить.

  6. В диалоговом окне "Удалить объект" убедитесь, что выбрана правильная схема секционирования, а затем нажмите кнопку "ОК".

Дальнейшие шаги

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