2012-12-27 2 views
3

나는 약 1000 개의 테이블이있는 데이터베이스를 가지고 있으며 특정 테이블과 관련된 모든 테이블을 찾아야합니다. 고객 테이블을 가정 해 봅시다. 어떻게해야합니까?모든 관련 테이블 찾기

+0

: http://msdn.microsoft.com/en-us/library/ms186778.aspx 시스템 카탈로그 뷰를 사용하여 다음 쿼리는 트릭을 할해야 – rene

답변

10

특정 테이블과 관련된 모든 테이블을 찾으려면 "고객"테이블에 대한 외래 키 참조가있는 모든 테이블을 요청한다고 가정합니다. 이것은 previous Stack Overflow question와 밀접한 관련이 있습니다.

select t.name as TableWithForeignKey, fk.constraint_column_id as FK_columns , c.name as ForeignKeyColumn 
    from sys.foreign_key_columns as fk 
     inner join sys.tables as t on fk.parent_object_id = t.object_id 
     inner join sys.columns as c on fk.parent_object_id = c.object_id and fk.parent_column_id = c.column_id 
    where fk.referenced_object_id = (select object_id from sys.tables where name = 'customers') 
    order by TableWithForeignKey, ForeignKeyColumn 
정보 스키마 뷰는 helpfull이다

MSDN sys.foreign_key_columns

+0

명백하게 내 데이터베이스에는 외래 키가 포함되어 있지 않았으므로 'name %'와 (과) 같이 사용해야했습니다. 귀하의 코드는 다른 데이터베이스를 시도했을 때 도움이되었습니다. – Swiftly