DBMS/MS-SQL

[MS-SQL] 테이블 및 컬럼 Description 및 정보 가져오기

Fly_Mir 2019. 4. 5. 17:35

MS-SQL에 저장되어 있는 Table과 Column의 설명 및 정보를 가져와보자.

다른 DB도 마찬가지겠지만 (오라클은 있었던걸로 기억...)

아무튼 DB자체에도 테이블과 컬럼의 설명을 넣을수 있도록 되어 있다.

개인적으로는 문서로 만들어 놓는거 보다(실컷 문서를 뒤졌는데 새롭게 추가된 컬럼이였으면 안적혀있을때가 많다...)

그냥 필요할때 검색해서 보면 되니 DB자체 Description을 더 선호한다.

DECLARE @TABLE_NAME NVARCHAR(50) = '테이블이름';
SELECT D.COLORDER                   AS COLUMN_IDX            -- Column Index
     , A.NAME                       AS TABLE_NAME            -- Table Name
     , C.VALUE                      AS TABLE_DESCRIPTION    -- Table Description
     , D.NAME                       AS COLUMN_NAME            -- Column Name
     , E.VALUE                      AS COLUMN_DESCRIPTION    -- Column Description
     , F.DATA_TYPE                  AS TYPE                    -- Column Type
     , F.CHARACTER_OCTET_LENGTH     AS LENGTH                -- Column Length
     , F.IS_NULLABLE                AS IS_NULLABLE            -- Column Nullable
     , F.COLLATION_NAME             AS COLLATION_NAME        -- Column Collaction Name
  FROM SYSOBJECTS A WITH (NOLOCK)
  INNER JOIN SYSUSERS B WITH (NOLOCK)        ON A.UID = B.UID
  INNER JOIN SYSCOLUMNS D WITH (NOLOCK)        ON D.ID = A.ID
  INNER JOIN INFORMATION_SCHEMA.COLUMNS F WITH (NOLOCK)
     ON A.NAME = F.TABLE_NAME
    AND D.NAME = F.COLUMN_NAME
   LEFT OUTER JOIN SYS.EXTENDED_PROPERTIES C WITH (NOLOCK)
     ON C.MAJOR_ID = A.ID
    AND C.MINOR_ID = 0
    AND C.NAME = 'MS_Description'
   LEFT OUTER JOIN SYS.EXTENDED_PROPERTIES E WITH (NOLOCK)
     ON E.MAJOR_ID = D.ID
    AND E.MINOR_ID = D.COLID
    AND E.NAME = 'MS_Description'   
  WHERE 1=1
    AND A.TYPE = 'U'
    AND A.NAME = @TABLE_NAME
  ORDER BY D.COLORDER

날다의 운영환경
본체MacBook Pro
O SWindows7 Ultimate K
ApplicationMicrosoft SQL Server Management Studio 2017 V17.2
MS-SQLMicorsoft SQL Server 2016(SP1-CU5)