MS SQL에서 특정 컬럼(Column)이 포함된 테이블(Table)을 모두 찾기 방법


MS SQL에서 하나의 데이터베이스(DB) 안에는 다수의 테이블(Table)을 생성해서 사용하게 됩니다.

각 테이블에는 또다시 다수의 컬럼(Column)이 만들어지게 되는데 이렇게 만들어진 컬럼은 여러 테이블과 서로 연결되어지기도 합니다.

가끔 특정 컬럼의 데이터를 일괄적으로 모두 변경해야 하는 경우가 생깁니다.

고객 마스터, 상품 마스터, 코드(Code) 마스터 또는 기타 마스터 데이터의 키(Key) 값을 변경해야 하는 경우 해당 마스터 데이터를 사용하는 컬럼이 포함된 모든 테이블의 데이터도 변경해주어야 합니다.

모든 테이블을 일괄적으로 변경하기 위해서는 해당 컬럼이 들어있는 테이블을 모두 찾아야 합니다.

테이블이 많지 않을 때는 테이블을 하나하나 열어서 해당 컬럼이 포함되어 있는지 확인이 가능하지만 테이블이 수백 개, 수천 개가 된다면 일일이 열어서 확인하기는 힘들게 됩니다.

이번 글에서는 간단하게 쿼리문 하나로 특정 컬럼이 포함된 모든 테이블 목록을 검색하는 방법에 대해 알아보겠습니다.

MS SQL에서 특정 컬럼(Column)이 포함된 테이블(Table)을 모두 찾기

– MS SQL의 데이터베이스에서 특정 Column이 포함된 Table을 찾기 위해서는 2개의 시스템 뷰를 사용하면 됩니다.

  • sys.tables : SQL Server에서 사용자 테이블마다 하나의 행을 반환합니다.
  • sys.columns : 뷰 또는 테이블과 같이 열을 가지고 있는 개체의 각 열에 대한 행을 반환합니다.

– sys.tables 뷰 테이블과 sys.columns 뷰 테이블의 연결(Join) 열(Column)은 object_id가 됩니다.

MS SQL에서 특정 컬럼(Column)이 포함된 테이블(Table)을 모두 찾기


▼ 아래 쿼리문은 컬럼(Column) 이름이 “acCustCode”가 포함된 모든 테이블(Table)을 검색하는 쿼리문 입니다.
– 당연히 쿼리문 실행 결과는 연결된 데이터베이스(DB)에 있는 테이블(Table) 중에 찾게 됩니다.
만약 다른 데이터베이스(DB)에서도 찾아야 한다면 해당 DB로 연결해서 쿼리문을 실행해 주면 됩니다.

 SELECT T.name AS Table_Name, C.name AS Column_Name
   FROM sys.tables AS T INNER JOIN sys.columns AS C
        ON T.object_id = C.object_id
  WHERE C.name = ‘acCustCode’
 


▼ 아래 화면은 위의 쿼리문의 실행 결과 입니다. “acCustCode” 컬럼이 포함된 테이블은 모두 5개가 검색되었습니다.

MSSQL에서 특정 컬럼이 포함된 테이블 목록 찾기 실행 결과

– 테이블 컬럼의 데이터를 일괄 변경해야 하는 경우 해당 테이블만 찾아서 “acCustCode” 컬럼의 데이터를 변경해주면 됩니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기