2011-09-06 4 views
1

임이 힘든 문제가 있습니다. Microsoft SQL 2008을 사용하는 데이터베이스가 있고이 데이터베이스에는 많은 테이블이 있습니다. 테이블은 자동 생성되었으며 의미있는 이름이 없습니다. 내가 필요로하는 특정 테이블이 하나 있는데, 찾을 수없는 것 같습니다.데이터베이스 메타 데이터에 액세스

테이블의 몇 가지 열 이름이 무엇인지 알고 있습니다. 한 번에 하나씩 열의 이름을보고 내가 아는 것과 일치하는지 보는 모든 테이블을 통과 할 수있는 방법이 있습니까?

만약 그렇다면, 내가 찾고있는 테이블인지 더 자세히 볼 수 있습니다. 이 문제에 대한 좋은 접근 방법처럼 들리니? 가능한가? 어디에서 시작해야하는지에 대한 아이디어가 있습니까? 요청에 의해

답변

2
SELECT OBJECT_SCHEMA_NAME([object_id]), 
    OBJECT_NAME([object_id]) 
    FROM sys.columns 
    WHERE name IN ('column 1', 'column 2' 
    /* , ... other columns */); 

편집는 경우에 의미 영업 이익은 대 ALL 식별 :

SELECT OBJECT_SCHEMA_NAME([object_id), name 
FROM sys.tables AS t 
WHERE EXISTS 
(
    SELECT 1 FROM sys.columns 
    WHERE name = 'column 1' 
    AND [object_id] = t.[object_id] 
) 
AND EXISTS 
(
    SELECT 1 FROM sys.columns 
    WHERE name = 'column 2' 
    AND [object_id] = t.[object_id] 
) 
/* ... repeat for other columns ... */ 
+0

않을까요'열 1' 또는 오히려 둘 이상의'열 2'로 돌려 테이블? –

+0

예. 그러나 알려진 컬럼 이름의 * ALL *이있는 테이블을 찾을 수있는 쿼리를 작성하는 것에 비해 매우 빠른 시작입니다. 이것은 꽤 빨리 좁혀 야합니다 ... –

1

대체 아론의 대답에 sys.columns 대신 INFORMATION_SCHEMA.COLUMNS를 사용

SELECT Table_name 
FROM 
     information_schema.columns 
WHERE 
     column_name IN ('column 1', 'column 2') 
GROUP BY Table_Name 
Having COUNT(column_name) = 2 

작업 예제는 Data.SE query

+0

일반적으로 저는 'INFORMATION_SCHEMA' 뷰를 사용하는 것이 좋습니다. http://stackoverflow.com/questions/7217886/unreliable-information-schema-schema-information-on-sql-server/7310746#7310746 –

+0

@Aaron 동의하지만 도구 상자에 최대한 많은 도구를 갖고 싶습니다. . 또한이 경우 (테이블과 컬럼 이름을 볼 때) 나는 ANSI 표준보기를 할인 할 강력한 이유가 없다. –

+0

아니, 일관성에 대한 자세한 내용입니다. 예를 들어 인덱스에 대해 'INFORMATION_SCHEMA'를 사용할 수 없거나 테이블이나 컬럼에 대한 정보가 풍부하다면 왜 태스크의 서브 세트에 사용하고 나머지는 카탈로그 뷰로 전환해야합니까? –

0

위의 스크립트를 사용하면 매우 제한 될 수있는 SQL wild-carding으로 제한됩니다. SchemaCrawler grep을 사용하면 정규 표현식을 사용하여 데이터베이스를 더욱 강력하게 검색 할 수 있습니다. SchemaCrawler를 사용하면 외래 키와 관련된 테이블을 찾는 추가 기능을 사용할 수 있으므로 예를 들어 고객 주소 열이있는 모든 테이블과이 테이블을 참조하는 테이블을 찾을 수 있습니다. SchemaCrawler는 Microsoft SQL Server 데이터베이스 드라이버와 번들로 제공되는 명령 줄 도구입니다.

Sualeh Fatehi, SchemaCrawler

관련 문제