2010-03-05 3 views
1

서버를 시작하기 전에 partitionN.ndf를 바꾸는 것만으로 하나의 테이블 파티션을 다른 파티션으로 바꿀 수 있기를 원합니다.테이블을 파티션하는 경우 SQL Server에 알리지 않고 파티션의 파일을 바꿀 수 있습니까?

일반적인 목표는 테이블 행 집합을 여러 파일로 나눠서 앱을 설치할 때 하나의 집합으로 만 이동할 수 있도록하는 것입니다. 이 항상 필요한 일부 행이 있으므로

시나리오 I 1000에서 ID를 밖으로 분할, 공통의 낮은 번호를 유지하는 것이 여기에

 
ID  Game   Strategy 
1  Squash  Stick to the T 
2  Racketball Drop it at the back 
3  Tennis  Serve to the backhand 
1000 Baseball  Favour third 
1002 Pool   Snooker them, be irritating 

 
ID  Game   Strategy 
1  Squash  Stick to the T 
2  Racketball Drop it at the back 
3  Tennis  Serve to the backhand 
1000 Croquet  The key is to be really mean 
1001 Billiards Glare a lot 

시나리오 B 데이터 베이스. 시나리오 별 파티션의 공통 데이터베이스에있는 테이블과 참조 무결성을 유지해야하는 많은 ID가있을 것입니다.

그게 가능할까요? 또는 서버가 실행 중일 때 서버를 대체하기 위해 일부 분할 명령을 발행해야합니까? 질문의 일부는 다음과 같습니다. 서버가 파일을 시작하고 읽는 지, 아니면 캐시에 대체 파일에 민감한 다른 것들을 유지합니까?

답변

1

전혀 작동하지 않을 것이라고 생각합니다. 파일은 단일 테이블 (gam, sgam, pfs, 파일 헤더 페이지)보다 훨씬 복잡한 구조이며 분할 된 테이블은 테이블 내의 파티션 당 HoBT ID를 가지며 새 파일은 동일한 HoBT ID를 갖지 않습니다. IAM 등

편집 :

귀하의 예를 들어 그 분할이, 당신은 기본적으로 고정 된 행의 특정 부분에 미리 입력 테이블을 가지고 노력하고 해결하기 위해 설계되었습니다 문제가되지 않습니다

하고, 설치 기준에 따라 가변적 인 행 수.

개인적으로 나는 이것을 위해 즉시 파티션 테이블을 무시하는 것이 좋습니다. 작업에 적합한 도구가 아닙니다. 대신에 값을 2 개의 물리적 테이블로 분할 한 다음 두 개의 맨 위에 뷰를 배치 할 수 있습니다. 두 개의 테이블을 하나로 합치십시오.

최소한 이것은 개별 파티션이 아닌 테이블을 교체하려고한다는 것을 의미합니다.하지만 필자는 여전히 그 접근법을 좋아하지 않을 것입니다. 설치 후 게시물을 추가 할 수있는 권한이 충분하면 파일 그룹을 추가하고 제거하십시오. 적절한 데이터로드 루틴을 사용하고 필요에 따라 데이터를로드하기에 충분한 권한이 있어야합니다.

값의 고정 부분과 가변 부분을 물리적으로 구분해야하는 경우 필요하면 나중에보기 접근 방식을 사용할 수 있습니다.

+0

@Andrew : 예시를 추가했습니다. 나는 그 접근법에 의해 확신하지 못했지만 그것은 나의 통제하에 있지 않습니다. –

+0

@Andrew : 당신이 얻고있는 것을보고 있지만 여러 개의 테이블로 분리되어 있어도 어떻게 설치 파일을 추가로 드롭 할 수 있습니까? 아니면 다른 테이블에 다른 파일에 앉아 시작시로드 할 수 있습니까? –

+0

모든 파일을 포함하고 설치시보기를 구성하거나 파일의 ETL 프로세스를 'variable'테이블에 사용하십시오. 변수 테이블에 ETL을 보내려는 경우 - 물어보아야합니다. 여전히 이들을 분리해야합니까? 아마. – Andrew