연구개발/DBA

슬라이딩 윈도우 기법을 이용한 파티션 관리

HEAD1TON 2012. 5. 22. 23:33

자동화 처리
CREATE PROC usp_Partition_SlidingWindowProcess

AS

/* 이미 파티션이 추가가됐는지 확인한다.*/

/* 먼저 추가될 파티션DB의 파일그룹을 생성한다.
   현재 예제에서 2011-04월까지의 파티션이 존재하므로 이후의 파티션을 자동으로 추가하는 프로시저이다.
   경계값 및 파일그룹명은 시스템에 맞게 수정해야 한다.
*/

DECLARE  @FileGroupName  CHAR(2)
    ,@strSQL   VARCHAR(1000)
    ,@PartitionRange VARCHAR(10)

SET @FileGroupName = REPLACE(STR(DATEPART(MM,DATEADD(MM,1,'2011-04-01 00:00:00.000')),2),' ','0');

SET @PartitionRange = CONVERT(VARCHAR(8),DATEADD(MM,1, '2011-04-01 00:00:00.000'),121) + '01'

SET @strSQL = 'USE Partition_DB

ALTER DATABASE Partition_DB ADD FILEGROUP Partition_' + @FileGroupName + ''

EXEC(@strSQL)

SET @strSQL = ''

/* 추가된 파일그룹에 매핑할 파일을생성한다. 파일사이즈는 목적에맞게 설정해주면 된다. */

SET @strSQL = 'USE Partition_DB
ALTER DATABASE Partition_DB ADD FILE (NAME= ''Partition_'+@FileGroupName+'''
, FILENAME = ''D:\DBFile\Partition_'+@FileGroupName+'.ndf'') TO FILEGROUP Partition_'+@FileGroupName+'';
EXEC(@strSQL)

/* 파티션스키마의 다음범위를 지정한다. 현재월까지분리가돼 있고 다음은 5월범위 가되야한다. */
SET @strSQL = 'USE Partition_DB
ALTER PARTITION scheme PS_Date NEXT used Partition_'+@FileGroupName+''
EXEC(@strSQL) 

/* 파티션함수의 마지막범위를 분리한다. */
SET @strSQL = 'USE Partition_DB
ALTER PARTITION FUNCTION PF_Date() SPLIT RANGE('''+@PartitionRange+''')'
EXEC(@strSQL) 

GO

--[스크립트7-186] 슬라이딩 윈도우 처리 프로시저 실행
EXEC dbo.usp_Partition_SlidingWindowProcess
GO