2022년 2월 23일 수요일

MSSQL 테이블 설명함수 만들기..

SSMS에서 디자인보기를 지원하지 않는경우 (도커로만든 DB의 경우 그렇다.)

테이블 구조를 보기에 쉽지 않다.

그래서 테이블 컬럼에대한 설명을 좀 봤으면 좋겠는데..

구글링을 해보니까 그런 스크립트가 있다.

그런데 내용이 많아서 전부 타이핑하기 귀찮으니까 함수로 만들어서 사용한다.

제약조건이나.. 키설명도 같이 표시할수는 없을까나...


[내용]

db에서 테이블 목록보기는

SELECT * FROM INFORMATION_SCHEMA.TABLES;

요로코롬..  그리고..

테이블 필드의 목록과 자료형 설명을 표시하려면 쿼리가 길어지니까

차라리 함수로 만들어서 리턴하는게 와방임..

다음과 같이 함수 생성 스크립트 작성


CREATE FUNCTION [dbo].[TableDesc](@TABLE_NAME NVARCHAR(50))
RETURNS TABLE
AS
RETURN
(

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 sys.sysobjects A WITH (NOLOCK)
  INNER JOIN sys.sysusers B WITH (NOLOCK)        ON A.UID = B.UID
  INNER JOIN sys.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
)
GO

요로코롬 하고  테이블을 리턴하니까
호출할때

select * from TableDesc('테이블명');

으로 호출하면된다.  

댓글 없음:

댓글 쓰기