--테이블 코멘트 추가
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', 테이블이름, DEFAULT, DEFAULT -- 칼럼 설명 추가 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', '테이블명', DEFAULT, DEFAULT); --컬럼 설명 조회 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', 컬럼 이름;