MSSQL 컬럼 설명 추가 - MSSQL keolleom seolmyeong chuga

--테이블 코멘트 추가

EXEC sp_addextendedproperty 'MS_Description', '테이블설명', 'USER', DBO, 'TABLE', '테이블명';

--테이블 코멘트 삭제

EXEC sp_dropextendedproperty 'MS_Description', 'SCHEMA', DBO, 'TABLE', '테이블명', DEFAULT, DEFAULT;

-- 칼럼 코멘트 추가

EXEC sp_addextendedproperty 'MS_Description', '컬럼설명', 'USER', DBO, 'TABLE', '테이블명', 'COLUMN', '컬럼명';

-- 컬럼 코멘트 삭제

EXEC sp_dropextendedproperty 'MS_Description', 'SCHEMA', DBO, 'TABLE', '테이블명', 'COLUMN', '컬럼명';

-- 전체 테이블 별 칼럼 코멘트 조회 ( 테이블명 설정 하면 해당 테이블만 조회됨 )

SELECT u.name + '.' + t.name AS [table],

td.value AS [table_desc],

c.name AS [column],

cd.value AS [column_desc]

FROM sysobjects t

INNER JOIN sysusers u

ON u.uid = t.uid

LEFT OUTER JOIN sys.extended_properties td

ON td.major_id = t.id

AND td.minor_id = 0

AND td.name = 'MS_Description'

INNER JOIN syscolumns c

ON c.id = t.id

LEFT OUTER JOIN sys.extended_properties cd

ON cd.major_id = c.id

AND cd.minor_id = c.colid

AND cd.name = 'MS_Description'

WHERE t.type = 'u'

and t.name = '테이블명' -- 테이블명 설정시 테이블만 조회, 이 조건을 제외하면 전체 조회

ORDER BY t.name, c.colorder

;

MSSQL 칼럼 설명 추가, 테이블 설명 추가 스크립트.

테이블명명. 칼럼명위치에 원하는 테이블 ,칼럼을 입력하면 된다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

--테이블 설명 추가

EXEC sp_addextendedproperty 'MS_Description''테이블설명''USER', DBO, 'TABLE', 테이블이름

--테이블  삭제

EXEC sp_dropextendedproperty 'MS_Description''SCHEMA', DBO, 'TABLE', 테이블이름, DEFAULTDEFAULT

-- 칼럼 설명 추가

EXEC sp_addextendedproperty 'MS_Description''컬럼설명''USER', DBO, 'TABLE', 테이블이름, 'COLUMN', 칼럼이름

-- 칼럼 설명 삭제

EXEC sp_dropextendedproperty 'MS_Description''SCHEMA', DBO, 'TABLE', 테이블이름, 'COLUMN', 칼럼이름

--테이블 설명 조회

SELECT OBJTYPE, OBJNAME, NAME, VALUE

FROM ::FN_LISTEXTENDEDPROPERTY (NULL'SCHEMA''DBO''TABLE''테이블명'DEFAULTDEFAULT);

--컬럼 설명 조회

SELECT OBJTYPE, OBJNAME, NAME, VALUE

FROM ::FN_LISTEXTENDEDPROPERTY(NULL'SCHEMA''DBO''TABLE''테이블명''COLUMN'DEFAULT);

테이블을 생성하거나, 칼럼을 생성하고 추가할 때 comment를 작성해주면 보기에도 편하고 다음에 새로운 사람이 왔을 때도 해당 테이블의 역할과 칼럼이 무슨 의미인지 알 수 있어서 좋습니다.  또한, 칼럼안에 데이터의 상태 값의 분류에 대해서도 적어줘도 좋습니다.

아직까지 이 기능에 대해서 모르거나.. 추가를 하지 않았다면.. 같이 협업 하는 사람들을 위해서라도 추가하고 공유하는게 좋을 것 같습니다. :) 



  • TABLE COMMENT 조회

SELECT

OBJTYPE, 

OBJNAME, 

NAME, 

VALUE 

FROM ::FN_LISTEXTENDEDPROPERTY (NULL, 'SCHEMA', 'DBO', 'TABLE', '테이블 이름', DEFAULT, DEFAULT); 

  • COLUMN COMMENT 조회

SELECT

OBJTYPE, 

OBJNAME, 

NAME, 

VALUE 

FROM ::FN_LISTEXTENDEDPROPERTY(NULL, 'SCHEMA', 'DBO', 'TABLE', '테이블 이름', 'COLUMN', DEFAULT); 

  • TABLE 정보 조회

SELECT 

A.TABLE_NAME, 

C.VALUE AS TABLE_COMMENT, 

A.COLUMN_NAME, 

A.DATA_TYPE, 

ISNULL(CAST(A.CHARACTER_MAXIMUM_LENGTH AS VARCHAR), CAST(A.NUMERIC_PRECISION AS VARCHAR) + ',' + CAST(A.NUMERIC_SCALE AS VARCHAR) ) AS COLUMN_LENGTH , 

A.COLUMN_DEFAULT , 

A.IS_NULLABLE , 

B.VALUE AS COLUM_COMMENT 

FROM INFORMATION_SCHEMA.COLUMNS A 

LEFT OUTER JOIN SYS.EXTENDED_PROPERTIES B ON B.MAJOR_ID = OBJECT_ID(A.TABLE_NAME) 

AND A.ORDINAL_POSITION = B.MINOR_ID LEFT OUTER JOIN (

SELECT OBJECT_ID(OBJNAME) AS TABLE_ID , VALUE 

FROM ::FN_LISTEXTENDEDPROPERTY (NULL, 'USER','DBO','TABLE', NULL, NULL, NULL) ) C ON OBJECT_ID(A.TABLE_NAME) = C.TABLE_ID 

WHERE A.TABLE_NAME = '테이블 이름' 

ORDER BY A.TABLE_NAME, A.ORDINAL_POSITION;

  • COMMNET 추가

--TABLE 

EXEC   SP_ADDEXTENDEDPROPERTY 'MS_DESCRIPTION', '입금내역', 'USER', DBO, 'TABLE', 테이블 이름;

--COLUMN 

EXEC   SP_ADDEXTENDEDPROPERTY 'MS_DESCRIPTION', '등록일시', 'USER', DBO, 'TABLE', 테이블 이름, 'COLUMN', REG_DATE;

  • COMMENT 업데이트

--TABLE 

EXEC   SP_UPDATEEXTENDEDPROPERTY 'MS_DESCRIPTION', '테이블설명', 'USER', DBO, 'TABLE',테이블 이름

--COLUMN 

EXEC   SP_UPDATEEXTENDEDPROPERTY 'MS_DESCRIPTION', '컬럼설명', 'USER', DBO, 'TABLE', 테이블 이름, 'COLUMN', 컬럼 이름;