IT 이야기/DB

[MSSQL] 테이블 및 컬럼 디스크립션(Description) 추가, 수정, 조회

하늘봉 2022. 9. 6. 12:00
반응형

테이블 및 컬럼에 디스크립션 (또는 코멘트) 추가하는 방법과 추가한 내용을 조회하는 방법을 소개해 드리겠습니다.

SQL Server에서 디스크립션을 추가하고 수정하는 명령어는 아래와 같습니다.

 

sp_addextendedproperty

sp_updateextendedproperty 

 

컬럼 디스크립션(Description) 추가, 수정 스크립트

-- 테이블 생성
CREATE TABLE dbo.CUST_TABLE (  
        custid varchar(10)  
,       custname varchar(20) 
,       country varchar(20) 
)  
GO
-- 데이터 입력
INSERT INTO CUST_TABLE(custid, custname, country) VALUES ('C2455', 'junsu', 'korea');  
INSERT INTO CUST_TABLE(custid, custname, country) VALUES ('C1575', 'mina', 'korea');  
INSERT INTO CUST_TABLE(custid, custname, country) VALUES ('C2474', 'hara', 'singapore'); 
INSERT INTO CUST_TABLE(custid, custname, country) VALUES ('C2479', 'leo', 'singapore');
GO

-- 디스크립션 내용 정의
DECLARE @DESCEIPTION nvarchar(100) = N'고객아이디'
DECLARE @USER_NAME varchar(10) = 'dbo'
DECLARE @TABLE_NAME varchar(100) = 'CUST_TABLE'
DECLARE @COL_NAME varchar(100) = 'custid'


-- 디스크립션 입력
EXEC sp_addextendedproperty 'MS_Description' , @DESCEIPTION , 'user' , @USER_NAME , 'table' , @TABLE_NAME, 'column' , @COL_NAME
GO

-- 디스크립션 수정
EXEC sp_updateextendedproperty 'MS_Description' , @DESCEIPTION , 'user' , @USER_NAME , 'table' , @TABLE_NAME, 'column' , @COL_NAME
GO

 

테이블 디스크립션을 입력하거나 수정하고 싶다면 같은 스크립트를 사용하되 테이블 레벨까지만 입력합니다.

 

 

테이블 디스크립션(Description) 추가, 수정 스크립트

DECLARE @DESCEIPTION nvarchar(100) = N'고객정보 테이블'
DECLARE @USER_NAME varchar(10) = 'dbo'
DECLARE @TABLE_NAME varchar(100) = 'CUST_TABLE'
DECLARE @COL_NAME varchar(100) = 'custid'


EXEC sp_addextendedproperty 'MS_Description' , @DESCEIPTION , 'user' , @USER_NAME , 'table' , @TABLE_NAME
GO

EXEC sp_updateextendedproperty 'MS_Description' , @DESCEIPTION , 'user' , @USER_NAME , 'table', @TABLE_NAME
GO

 

이제 디스크립션이 제대로 입력되었는지 확인해보도록 하겠습니다.

 

 

테이블 디스크립션(Description) 조회 스크립트

DECLARE @table_name nvarchar(50) = 'CUST_TABLE';  

SELECT sc.colorder                    AS idx                
     , so.name                        AS table_name              
     , sep1.value                     AS table_description     
     , sc.name                        AS column_name         
     , sep2.value                     AS column_description       
FROM sysobjects so WITH(NOLOCK)     
JOIN syscolumns sc WITH(NOLOCK)  on sc.id = so.id     
JOIN information_schema.columns isc WITH(NOLOCK) ON so.name = isc.table_name AND sc.name = isc.column_name      
LEFT OUTER JOIN sys.extended_properties sep1 WITH(NOLOCK) ON sep1.major_id = so.id AND sep1.minor_id = 0 AND sep1.name = 'MS_Description'      
LEFT OUTER JOIN sys.extended_properties sep2 WITH(NOLOCK) ON sep2.major_id = sc.id AND sep2.minor_id = sc.colid AND sep2.name = 'MS_Description'       
WHERE 1=1       
AND so.type = 'U'      
AND so.name = @table_name     
order by sc.colorder

 

쿼리를 조회하면 위에서 입력한 디스크립션이 잘 들어간 것을 확인할 수 있습니다.

 

반응형