パーティション構成を変更する

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

SQL Server、Azure SQL Database、および Azure SQL Managed Instance のパーティション構成を変更する場合は、SQL Server Management Studio (SSMS) または Transact-SQL を使用して、パーティション テーブルに追加される次のパーティションを保持するファイル グループを指定します。 この操作は、NEXT USED プロパティをファイル グループに割り当てることで実行できます。

NEXT USED プロパティは、空のファイル グループか、またはパーティションを既に保持しているファイル グループに割り当てることができます。 つまり、ファイル グループでは、複数のパーティションを保持することができます。 ファイル グループとパーティション分割戦略の詳細については、「ファイル グループ」を参照してください。

テーブルのパーティション分割は、Azure Synapse Analytics の専用 SQL プールでも使用でき、構文の違いがいくつかあります。 詳細については、 「専用 SQL プールでのテーブルのパーティション分割」に関するページを参照してください。

制限事項

ALTER PARTITION SCHEME の対象となるファイル グループは、オンラインになっている必要があります。

注意

Azure SQL Database では、PRIMARY ファイル グループのみがサポートされます。

アクセス許可

次の権限を使って ALTER PARTITION SCHEME を実行できます。

  • ALTER ANY DATASPACE 権限。 この権限は、既定では sysadmin 固定サーバー ロール、 db_owner 固定データベース ロール、および db_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. [オブジェクトの削除] ダイアログ ボックスで、正しいパーティション構成が選択されていることを確認し、[OK] を選択します。

次のステップ

テーブルのパーティション分割の詳細については、次の記事を参照してください。