데이터베이스에서 모든 파티션 된 테이블 목록을 얻으려면 어떻게합니까?


답변:


21

이 쿼리는 원하는 것을 제공해야합니다.

select distinct t.name
from sys.partitions p
inner join sys.tables t
on p.object_id = t.object_id
where p.partition_number <> 1

sys.partitions카탈로그 뷰는 테이블과 대부분의 인덱스의 모든 파티션의 목록을 제공합니다. sys.tables테이블에 가입 하려면 함께 참여 하십시오.

모든 테이블에는 적어도 하나의 파티션이 있으므로 파티션 된 테이블을 구체적으로 찾고 있다면 sys.partitions.partition_number <> 1(파티션되지 않은 테이블의 partition_number경우 항상 1과 동일)을 기준으로이 쿼리를 필터링해야합니다 .


이 50K 개체를 반환하고 그것에 대해 뭔가를 생각하지 않습니다. 우리는 sql 2005에서 2008 R2로 Peoplesoft Finance db 업그레이드 중이며 새로운 버전의 people 도구는 분할 테이블을 지원하지 않는 것 같습니다. 분할 된 테이블을 식별하는 다른 방법이 있습니까?
RK Kuppala

1
@yogirk 죄송합니다. 오타가 있습니다. 내 편집을 참조하십시오. partition_idWHERE 절 대신에 필요합니다 partition_number. 사과드립니다.
Thomas Stringer

편집 주셔서 감사합니다 내가 해결하기 위해 몇 테이블 내가 :) 예상처럼있다 기쁘다
RK Kuppala

@ yogirk 그것으로 재미를!
토마스 스트링거

4
여기에 오류가 있습니다-테이블은 여전히 ​​PF 및 PS를 사용하여 분할 할 수 있지만 단일 분할 영역을 가질 수 있습니다. 따라서 해당 테이블에 대한 쿼리는 잘못된 결과를 반환합니다.
Oleg Dok

29

Methinks가 더 나은 쿼리는 다음과 같습니다.

select object_schema_name(i.object_id) as [schema],
    object_name(i.object_id) as [object],
    i.name as [index],
    s.name as [partition_scheme]
    from sys.indexes i
    join sys.partition_schemes s on i.data_space_id = s.data_space_id

이것은 파티션 구성표를 식별하기 위해 '적절한'장소를 찾습니다. sys.partition_schemes, 그것은 올바른 카디널리티 (필요 없음)를 가지며, 파티션 된 오브젝트 distinct 표시 하고 (필터링 절 필요 없음 ) 스키마 이름과 파티션 구성표 이름을 투사합니다. 이 쿼리가 원래 질문에 대한 결함을 강조하는 방법에 주목하십시오. 파티션 된 테이블 이 아니라 인덱스입니다 (인덱스 0과 1, 일명 힙 및 클러스터형 인덱스 포함). 테이블에는 여러 개의 인덱스가있을 수 있으며, 일부는 분할되지 않은 인덱스가있을 수 있습니다.where


3
이것은 테이블이 파일 그룹이 아닌 ON 파티션 구성표 인 경우를 고려하여 첫 번째 답변이 아닌 정답입니다.
Oleg Dok

3

그렇다면 2를 결합하는 것은 어떻습니까?

select 
    object_schema_name(i.object_id) as [schema],
    object_name(i.object_id) as [object_name],
    t.name as [table_name],
    i.name as [index_name],
    s.name as [partition_scheme]
from sys.indexes i
    join sys.partition_schemes s on i.data_space_id = s.data_space_id
    join sys.tables t on i.object_id = t.object_id    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.