파티션 함수 수정Modify a Partition Function

SQL Server 2017SQL Server 2017 을 사용하여 분할된 테이블이나 인덱스의 파티션 함수에 지정된 파티션 수를 하나씩 더하거나 빼서 Transact-SQLTransact-SQL에서 테이블이나 인덱스가 분할되는 방식을 변경할 수 있습니다.You can change the way a table or index is partitioned in SQL Server 2017SQL Server 2017 by adding or subtracting the number of partitions specified, in increments of 1, in the partition function of the partitioned table or index by using Transact-SQLTransact-SQL. 파티션 추가는 기존의 한 파티션을 두 파티션으로 "분할"하고 새 파티션의 경계를 다시 정의하는 것입니다.When you add a partition, you do so by "splitting" an existing partition into two partitions and redefining the boundaries of the new partitions. 파티션 삭제는 두 파티션의 경계를 하나로 "병합"하는 것입니다.When you drop a partition, you do so by "merging" the boundaries of two partitions into one. 이 마지막 동작에서 한 파티션은 다시 채워지고 다른 한 파티션은 할당되지 않은 상태로 남게 됩니다.This last action repopulates one partition and leaves the other partition unassigned.

주의

둘 이상의 테이블 또는 인덱스가 같은 파티션 함수를 사용할 수 있습니다.More than one table or index can use the same partition function. 파티션 함수를 수정할 경우 단일 트랜잭션에 있는 모든 대상에 영향을 줍니다.When you modify a partition function, you affect all of them in a single transaction. 파티션 함수를 수정하기 전에 파티션 함수의 종속성을 확인합니다.Check the partition function’s dependencies before modifying it.

항목 내용In This Topic

시작하기 전 주의 사항 Before You Begin

제한 사항 Limitations and Restrictions

  • ALTER PARTITION FUNCTION은 한 파티션을 둘로 분할하거나 두 파티션을 하나로 병합하는 데만 사용할 수 있습니다.ALTER PARTITION FUNCTION can only be used for splitting one partition into two, or for merging two partitions into one. 10개의 파티션을 5개로 줄이는 것과 같이 테이블이나 인덱스가 분할되는 방식을 변경하려면 다음 옵션 중 하나를 사용합니다.To change the way a table or index is partitioned (from 10 partitions to 5, for example), you can use any one of the following options:

    • 원하는 파티션 함수가 있는 분할된 테이블을 새로 만든 다음 INSERT INTO ... SELECT FROM Transact-SQLTransact-SQL 문 또는 SQL Server Management StudioSQL Server Management Studio파티션 관리 마법사를 사용하여 이전 테이블의 데이터를 새 테이블에 삽입합니다.Create a new partitioned table with the desired partition function, and then insert the data from the old table into the new table by using either an INSERT INTO ... SELECT FROM Transact-SQLTransact-SQL statement or the Manage Partition Wizard in SQL Server Management StudioSQL Server Management Studio.

    • 힙에 분할된 클러스터형 인덱스를 만듭니다.Create a partitioned clustered index on a heap.

      참고

      분할된 클러스터형 인덱스를 삭제하면 힙이 분할됩니다.Dropping a partitioned clustered index results in a partitioned heap.

    • Transact-SQLTransact-SQL CREATE INDEX 문에 DROP EXISTING = ON 절을 사용하여 기존의 분할 인덱스를 삭제하고 다시 작성합니다.Drop and rebuild an existing partitioned index by using the Transact-SQLTransact-SQL CREATE INDEX statement with the DROP EXISTING = ON clause.

    • ALTER PARTITION FUNCTION 문의 시퀀스를 수행합니다.Perform a sequence of ALTER PARTITION FUNCTION statements.

  • SQL ServerSQL Server 에서는 파티션 함수 수정을 위한 복제 지원을 제공하지 않습니다. does not provide replication support for modifying a partition function. 게시 데이터베이스의 파티션 함수를 변경하려면 구독 데이터베이스에서 직접 파티션 함수를 수정해야 합니다.If you want to make changes to a partition function in the publication database, you must do this manually in the subscription database.

  • ALTER PARITITION FUNCTION의 영향을 받는 모든 파일 그룹이 온라인 상태여야 합니다.All filegroups that are affected by ALTER PARITITION FUNCTION must be online.

보안 Security

사용 권한 Permissions

ALTER PARTITION FUNCTION을 실행하려면 다음 중 하나의 권한이 필요합니다.Any one of the following permissions can be used to execute ALTER PARTITION FUNCTION:

  • ALTER ANY DATASPACE 권한.ALTER ANY DATASPACE permission. 이 권한은 기본적으로 sysadmin 고정 서버 역할 및 db_ownerdb_ddladmin 고정 데이터베이스 역할의 멤버에게 부여됩니다.This permission defaults to members of the sysadmin fixed server role and the db_owner and db_ddladmin fixed database roles.

  • 파티션 함수가 생성된 데이터베이스에 대한 CONTROL 또는 ALTER 권한CONTROL or ALTER permission on the database in which the partition function was created.

  • 파티션 함수가 생성된 데이터베이스의 서버에 대한 CONTROL SERVER 또는 ALTER ANY DATABASE 권한CONTROL SERVER or ALTER ANY DATABASE permission on the server of the database in which the partition function was created.

SQL Server Management Studio 사용 Using SQL Server Management Studio

파티션 함수를 수정하려면To modify a partition function:

이 특정 동작은 SQL Server Management StudioSQL Server Management Studio를 사용하여 수행할 수 없습니다.This specific action cannot be performed using SQL Server Management StudioSQL Server Management Studio. 파티션 함수를 수정하려면 먼저 함수를 삭제한 다음 파티션 작성 마법사를 사용하여 원하는 속성이 포함된 새 함수를 만들어야 합니다.In order to modify a partition function, you must first delete the function and then create a new one with the desired properties using the Create Partition Wizard. 자세한 내용은 다음을 참조하세요.For more information, see

파티션 함수를 삭제하려면To delete a partition function

  1. 파티션 함수를 삭제할 데이터베이스를 확장한 다음 저장소 폴더를 확장합니다.Expand the database where you want to delete the partition function and then expand the Storage folder.

  2. 파티션 함수 폴더를 확장합니다.Expand the Partition Functions folder.

  3. 삭제할 파티션 함수를 마우스 오른쪽 단추로 클릭하고 삭제를 선택합니다.Right-click the partition function you want to delete and select Delete.

  4. 개체 삭제 대화 상자에서 올바른 파티선 함수를 선택했는지 확인한 다음 확인을 클릭합니다.In the Delete Object dialog box, ensure that the correct partition function is selected, and then click OK.

Transact-SQL 사용 Using Transact-SQL

단일 파티션을 두 개의 파티션으로 분할하려면To split a single partition into two partitions

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    -- Look for a previous version of the partition function “myRangePF1” and deletes it if it is found.  
    IF EXISTS (SELECT * FROM sys.partition_functions  
        WHERE name = 'myRangePF1')  
        DROP PARTITION FUNCTION myRangePF1;  
    GO  
    -- Create a new partition function called “myRangePF1” that partitions a table into four partitions.  
    CREATE PARTITION FUNCTION myRangePF1 (int)  
    AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );  
    GO  
    --Split the partition 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);  
    

두 개의 파티션을 하나의 파티션으로 병합하려면To merge two partitions into one partition

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    -- Look for a previous version of the partition function “myRangePF1” and deletes it if it is found.  
    IF EXISTS (SELECT * FROM sys.partition_functions  
        WHERE name = 'myRangePF1')  
        DROP PARTITION FUNCTION myRangePF1;  
    GO  
    -- Create a new partition function called “myRangePF1” that partitions a table into four partitions.  
    CREATE PARTITION FUNCTION myRangePF1 (int)  
    AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );  
    GO  
    --Merge the partitions between boundary_values 1 and 100  
    --and between boundary_values 100 and 1000 to create one partition  
    --between boundary_values 1 and 1000.  
    ALTER PARTITION FUNCTION myRangePF1 ()  
    MERGE RANGE (100);  
    

    자세한 내용은 ALTER PARTITION FUNCTION(Transact-SQL)을 참조하세요.For more information, see ALTER PARTITION FUNCTION (Transact-SQL).