Search

2015년 12월 22일 화요일

[Database] [MSSQL] 특정 캡션을 사용하는 테이블 설명, 컬럼 설명 찾기, 변경하기.

* 테이블과 컬럼에 추가된 캡션을 일괄적으로 수정해야 하는 경우가 있는데, 특정 캡션을 사용하는 모든 테이블을 추출할 때 편리한 쿼리이다.
* 예를 들어, 'MS_Description' 라고 이름 붙은 설명을 사용하는 모든 테이블을 추출하는 쿼리는 다음과 같다.

SELECT  * FROM ::fn_listextendedproperty (NULL, 'SCHEMA', 'dbo', 'table', default, default, default) where name = 'MS_Description'


* 찾은 테이블(A_Table)의 설명을 제거하기 위해서는 아래와 같은 쿼리를 사용한다.

EXEC sys.sp_dropextendedproperty @name=N'MS_Description', @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name='A_Table'


* 테이블이나 컬럼에 일괄적으로 설명을 추가할때는 아래와 같이 IF문과 활용하면 더욱 편리하다.

-- A테이블의 'MS_Description'로 지정된 캡션이 존재하면 갱신, 그렇지 않으면 새로 생성하는 쿼리.
IF NOT EXISTS (SELECT  objname FROM ::fn_listextendedproperty (NULL, 'SCHEMA', 'dbo', 'table', 'A_Table', default, default))
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A테이블입니다', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'A_Table'
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=N'A테이블입니다', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'A_Table'

-- A테이블의 컬럼1에 'MS_Description'로 지정된 캡션이 존재하면 갱신, 그렇지 않으면 새로 생성하는 쿼리.
IF NOT EXISTS (select * from (SELECT  objname FROM ::fn_listextendedproperty (NULL, 'SCHEMA', 'dbo', 'table', 'A_Table', 'column', default)) as t where t.objname = 'Column_1')
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A테이블의 1번 컬럼입니다', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'A_Table', @level2type=N'COLUMN', @level2name=N'Column_1'
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=N'A테이블의 1번 컬럼입니다', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'A_Table', @level2type=N'COLUMN', @level2name=N'Column_1'


댓글 없음:

댓글 쓰기