2012-06-09 6 views
0

내 테이블의 구조는 다음과 같습니다 :바꿔 파티션 함수 및 파티션 스키마가 자동으로

SalesCompanyFinancialPeriod (ID int, ...) 
Document (ID int, SalesCompanyFinancialPeriodID Int, ...) 
DocumentDetail (ID Int, DocumentID Int, ...) 

내가 SalesCompanyFinancialPeriodID 열 값을 사용하여 Document 테이블과 DocumentDetail 테이블을 분할을위한 분할 기능과 분할 스키마를 만들려고합니다. SalesCompanyFinancialPeriod 테이블의 after 트리거를 사용하여이 파티션 스키마와 파티션 함수를 자동으로 변경하려고합니다. 다른 단어에서

, 나는 자동으로 새 salescompanyfinancialperiod 레코드가 생성 될 때 내 데이터베이스에 파일 그룹을 만들고, 새로 만든 파일 그룹의 새로운 salescompanyfinancialperiodidDocument 테이블과 DocumentDetail 테이블의 레코드를 분할하고자합니다.

어떻게하면됩니까?

+0

더 많은 도움을 얻을 수 있으므로 dba.stackexchange.com에서이 질문을 할 수 있습니다. –

답변

1

가 수행하는 http://sqlfascination.com/2010/09/12/interval-partitioning-in-sql-server-2008/를 참조 거의 정확하게이 (1 개 테이블을 기반으로하지만,이 같은 생각입니다.)

그는 MS에 따르면, DML 트리거가 직접이 작업을 수행 할 수 있다고 지적

; Books OnLine을 인용하면 다음과 같습니다. "다음의 Transact-SQL 문은 트리거 동작 ..., ALTER PARTITION FUNCTION, ...의 대상인 테이블이나 뷰에 대해 사용될 때 DML 트리거 본문 내에 허용되지 않습니다. .. "

그는 사실이 아니라고 말하지만 나는 조심 스러울 것이다. 대신 트리거를 기반으로 실행되는 파티션을 변경하는 저장 프로 시저를 만들 수 있습니다. 이 명령문은 데이터베이스 소유자로 실행해야하고 데이터 공간 권한이 있어야하므로 직접 트리거를 사용하는 것이 무섭기 때문에 다소 안전합니다.

사이드 노트 - SQL 2008에는 목록 파티션이없고 범위 파티션 만 있으므로 수동으로도 성가 시게됩니다. 다음과 같이 속일 수 있습니다 : http://www.sqlservercentral.com/articles/partition/64740/