다음을 통해 공유


CREATE PARTITION SCHEME(Transact-SQL)

적용 대상:SQL ServerAzure SQL 데이터베이스Azure SQL Managed Instance

현재 데이터베이스에서 분할된 테이블 또는 인덱스의 파티션을 하나 이상의 파일 그룹에 매핑하는 구성표를 만듭니다. 테이블 또는 인덱스의 행을 파티션에 매핑하는 값은 파티션 함수에 지정됩니다. 파티션 구성표를 만들기 전에 CREATE PARTITION FUNCTION 문을 사용해 먼저 파티션 함수를 만들어야 합니다.

참고

Azure SQL Database에서는 기본 파일 그룹만 지원됩니다. 파일 그룹에서 파일 그룹 및 분할 전략에 대해 자세히 알아보세요.

Transact-SQL 구문 표기 규칙

구문

CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ , ...n ] )
[ ; ]

인수

partition_scheme_name

파티션 구성표의 이름입니다. 파티션 구성표 이름은 데이터베이스 내에서 고유해야 하며 식별자에 대한 규칙을 따라야 합니다.

partition_function_name

파티션 구성표를 사용하는 파티션 함수의 이름입니다. 파티션 함수로 생성한 파티션은 파티션 구성표에서 지정한 파일 그룹으로 매핑됩니다. partition_function_name이 데이터베이스에 이미 있어야 합니다. 단일 파티션은 FILESTREAM 및 비 FILESTREAM 파일 그룹을 모두 포함할 수 없습니다.

ALL

모든 파티션이 file_group_name제공된 파일 그룹 또는 [PRIMARY] 지정된 경우 주 파일 그룹에 매핑되도록 지정합니다. ALL 지정한 경우 file_group_name 하나만 지정할 수 있습니다.

file_group_name | [ PRIMARY ] [ , ...n ]

partition_function_name 지정한 파티션을 저장할 파일 그룹의 이름을 지정합니다. file_group_name은 데이터베이스에 이미 있어야 합니다.

[PRIMARY] 지정하면 파티션이 기본 파일 그룹에 저장됩니다. ALL 지정한 경우 file_group_name 하나만 지정할 수 있습니다. 파티션은 파일 그룹이 [, ...<n>]나열되는 순서대로 파티션 1부터 파일 그룹에 할당됩니다. 동일한 file_group_name[, ...<n>]두 번 이상 지정할 수 있습니다. npartition_function_name지정된 파티션 수를 보유하기에 충분하지 않으면 오류가 발생하여 CREATE PARTITION SCHEME 실패합니다.

partition_function_name 파일 그룹보다 적은 파티션을 생성하는 경우 할당되지 않은 첫 번째 파일 그룹이 NEXT USED표시되고 정보 메시지에 NEXT USED 파일 그룹의 이름이 표시됩니다. ALL 지정하면 유일한 file_group_nameNEXT USED대한 속성을 유지 관리합니다. NEXT USED 파일 그룹은 ALTER PARTITION FUNCTION 문에서 파티션을 만드는 경우 추가 파티션을 받습니다. 새 파티션을 저장할 할당되지 않은 파일 그룹을 더 많이 만들려면 ALTER PARTITION SCHEME사용합니다.

<file_group_name> [, ...<n>]기본 파일 그룹을 지정하는 경우 키워드이므로 PRIMARY[PRIMARY]같이 구분해야 합니다.

SQL Database에는 PRIMARY만 지원됩니다. 예제 E참조하세요.

사용 권한

다음 권한을 사용하여 CREATE PARTITION SCHEME실행할 수 있습니다.

  • ALTER ANY DATASPACE 권한입니다. 이 권한은 기본적으로 sysadmin 고정 서버 역할 및 db_ownerdb_ddladmin 고정 데이터베이스 역할의 멤버에게 부여됩니다.

  • 파티션 구성표를 만드는 데이터베이스에 대한 사용 권한을 CONTROL 또는 ALTER.

  • 파티션 구성표를 만드는 데이터베이스의 서버에 대한 사용 권한을 CONTROL SERVER 또는 ALTER ANY DATABASE.

예제

A. 각 파티션을 다른 파일 그룹에 매핑하는 파티션 구성표 만들기

다음 예에서는 테이블이나 인덱스를 4개의 파티션으로 분할하는 파티션 함수를 만듭니다. 4개의 파티션 각각을 보유하도록 파일 그룹을 지정하는 파티션 구성표를 만듭니다. 이 예에서는 데이터베이스에 이미 파일 그룹이 있다고 가정합니다.

CREATE PARTITION FUNCTION myRangePF1(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);

다음 표와 같이 분할 열 myRangePF1 파티션 함수 col1 사용하는 테이블의 파티션이 할당됩니다.

파일 그룹 파티션
test1fg 1 col1 <= 1
test2fg 2 col1 > 1 AND col1<= 100
test3fg 3 col1 > 100 AND col1<= 1000
test4fg 4 col1 > 1000

B. 여러 파티션을 동일한 파일 그룹에 매핑하는 파티션 구성표 만들기

모든 파티션이 동일한 파일 그룹에 매핑되는 경우 ALL 키워드를 사용합니다. 그러나 모든 파티션이 아니라 여러 개의 일부 파티션을 같은 파일 그룹에 매핑하는 경우 다음 예와 같이 파일 그룹 이름을 반복해야 합니다.

CREATE PARTITION FUNCTION myRangePF2(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS2
AS PARTITION myRangePF2
TO (test1fg, test1fg, test1fg, test2fg);

다음 표와 같이 분할 열 myRangePF2 파티션 함수 col1 사용하는 테이블의 파티션이 할당됩니다.

파일 그룹 파티션
test1fg 1 col1 <= 1
test1fg 2 col1 > 1 AND col1<= 100
test1fg 3 col1 > 100 AND col1<= 1000
test2fg 4 col1 > 1000

C. 모든 파티션을 동일한 파일 그룹에 매핑하는 파티션 구성표 만들기

다음 예에서는 앞의 예와 같은 파티션 함수를 만들고 모든 파티션을 같은 파일 그룹에 매핑하는 파티션 구성표를 만드는 방법을 보여 줍니다.

CREATE PARTITION FUNCTION myRangePF3(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS3
AS PARTITION myRangePF3
ALL TO (test1fg);

D. NEXT USED 파일 그룹을 지정하는 파티션 구성표 만들기

다음 예제에서는 이전 예제와 동일한 파티션 함수를 만듭니다. 또한 연결된 파티션 함수에서 만든 파티션보다 더 많은 파일 그룹을 나열하는 파티션 구성표를 만듭니다.

CREATE PARTITION FUNCTION myRangePF4(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS4
AS PARTITION myRangePF4
TO (test1fg, test2fg, test3fg, test4fg, test5fg);

문을 실행하면 다음 메시지가 반환됩니다.

Partition scheme 'myRangePS4' has been created successfully. 'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'.

파티션을 추가하도록 myRangePF4 파티션 함수를 변경한 경우 test5fg 파일 그룹이 새로 만들어진 파티션을 받습니다.

E. PRIMARY에서만 파티션 구성표 만들기

Azure SQL Database에서 파일 및 파일 그룹 추가는 지원되지 않지만 테이블 분할은 PRIMARY 파일 그룹에서만 분할하여 지원됩니다.

다음 예에서는 테이블이나 인덱스를 4개의 파티션으로 분할하는 파티션 함수를 만듭니다. 그런 다음 모든 파티션이 PRIMARY 파일 그룹에 생성되도록 지정하는 파티션 구성표가 만들어집니다.

CREATE PARTITION FUNCTION myRangePF1(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ([PRIMARY]);