修改分区方案

适用范围:SQL Server Azure SQL 数据库 Azure SQL 托管实例

可以使用 SQL Server Management Studio(SSMS) 或 Transact-SQL 指定文件组来保存添加到已分区表的下一个分区,从而修改 SQL Server、Azure SQL 数据库和 Azure SQL 托管实例中的分区方案。 可通过将 NEXT USED 属性分配给文件组来执行此操作。

您可以将 NEXT USED 属性分配给空文件组或已存有分区的文件组。 也就是说,一个文件组可以保存多个分区。 要详细了解文件组和分区策略,请参阅 文件组

Azure Synapse Analytics 的专用 SQL 池中也提供了表分区功能,但语法存在一些差异。 要了解详细信息,请参阅 在专用 SQL 池中对表分区

限制

受 ALTER PARTITION SCHEME 影响的所有文件组都必须处于联机状态。

注意

Azure SQL 数据库仅支持 PRIMARY 文件组。

权限

以下权限可用于执行 ALTER PARTITION SCHEME:

  • ALTER ANY DATASPACE 权限。 默认情况下,此权限授予 sysadmin 固定服务器角色和 db_ownerdb_ddladmin 固定数据库角色的成员。

  • 对创建分区方案时所在数据库的 CONTROL 或 ALTER 权限。

  • 对承载了创建分区方案时所在数据库的服务器的 CONTROL SERVER 或 ALTER ANY DATABASE 权限。

使用 Transact-SQL 修改分区方案

本示例使用 AdventureWorks 示例数据库。

  1. “对象资源管理器” 中,连接到 数据库引擎的实例。

  2. 在标准栏上,选择“新建查询” 。

  3. 将以下示例复制并粘贴到查询窗口中,然后选择“执行”。

    注意

    为简便起见,此代码将创建新的文件组,但不向其分配文件。 这便于演示如何修改分区方案,而不是有关配置分区对象的完整示例。 有关创建已分区表和索引的示例,请参阅 创建已分区表和索引

    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. 在“删除对象”对话框中,确保选择的分区方案正确,然后选择“确定”

后续步骤

在以下文章中详细了解表分区: