修改分区方案

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 预览版中的 SQL 数据库

可以通过在 SQL Server Management Studio (SSMS) 或 Transact-SQL 中指定文件组来容纳添加到分区表中的下一个分区,从而修改分区方案。 可通过将 NEXT USED 属性分配给文件组来执行此操作。

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

Limitations

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

Azure SQL 数据库和 Fabric 中的 SQL 数据库完全支持分区。 所有分区必须放置在PRIMARY文件组上,因为在 Azure SQL 数据库和 Fabric 的 SQL 数据库中仅提供 PRIMARY 文件组。

表分区在 Azure Synapse Analytics 的专用 SQL 池中可用,语法存在一些差异。 有关详细信息,请参阅 专用 SQL 池中的分区表

Permissions

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

  • ALTER ANY DATASPACE 权限。 默认情况下,此权限授予 sysadmin 固定服务器角色和 db_ownerdb_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. 在“删除对象”对话框中,确保选择的分区方案正确,然后选择“确定”

Next steps

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