DB

[ms-sql] 테이블 Description 보는 방법

mssql 테이블 Description 보는 쿼리

아래 2개의 쿼리 중에 아무거나 실행하면 테이블 디스크립션을 볼 수 있다.

방법1

SELECT
[Table Name] = OBJECT_NAME(c.object_id),
[Column Name] = c.name,
[Description] = ex.value ,
is_nullable ,  is_identity,max_length
FROM
sys.columns c
LEFT OUTER JOIN
sys.extended_properties ex
ON
ex.major_id = c.object_id
AND ex.minor_id = c.column_id
AND ex.name = ‘MS_Description’
WHERE OBJECTPROPERTY(c.object_id, ‘IsMsShipped’)=0
AND OBJECT_NAME(c.object_id) = ‘테이블명’
ORDER
BY OBJECT_NAME(c.object_id), c.column_id

방법2

DECLARE @MYTABLES AS VARCHAR(30)
SET @MYTABLES = ‘테이블명’

SELECT SM.TABLE_TYPE
, IC.TABLE_NAME
, IC.COLUMN_NAME
–, IC.DATA_TYPE AS TYPE
–, IC.CHARACTER_MAXIMUM_LENGTH AS LENGTH
, CASE WHEN IC.DATA_TYPE IN (‘VARCHAR’, ‘NVARCHAR’, ‘char’, ‘nchar’)
THEN IC.DATA_TYPE + ‘(‘ + CONVERT(VARCHAR(10), ISNULL(IC.CHARACTER_MAXIMUM_LENGTH, IC.NUMERIC_PRECISION)) + ‘)’
WHEN IC.DATA_TYPE IN (‘DECIMAL’)
THEN IC.DATA_TYPE + ‘(‘ + CONVERT(VARCHAR(10), IC.NUMERIC_PRECISION) + ‘, ‘ + CONVERT(VARCHAR(10), IC.NUMERIC_SCALE) + ‘)’
ELSE IC.DATA_TYPE
END AS TYPE
, IC.IS_NULLABLE AS ISNULL
, ISNULL(IC.COLUMN_DEFAULT, ”) AS [DEFAULT]
, ISNULL(PK.COLUMN_NAME, ”) AS PK
, ISNULL(FK.COLUMN_NAME, ”) AS FK
, ISNULL(EX.VALUE, ”) AS [DESCRIPTION]
FROM (SELECT NAME, ‘VIEW’ AS TABLE_TYPE FROM SYS.VIEWS
WHERE NAME LIKE @MYTABLES
UNION
SELECT NAME, ‘TABLE’ AS TABLE_TYPE FROM SYS.TABLES
WHERE NAME LIKE @MYTABLES ) SM
INNER JOIN INFORMATION_SCHEMA.COLUMNS IC
ON SM.NAME = IC.TABLE_NAME
LEFT OUTER JOIN (SELECT SC.OBJECT_ID, SC.NAME, SE.VALUE
FROM SYS.COLUMNS SC
INNER JOIN SYS.EXTENDED_PROPERTIES SE
ON SC.OBJECT_ID = SE.MAJOR_ID AND SC.COLUMN_ID = SE.MINOR_ID ) EX
ON OBJECT_ID(IC.TABLE_NAME) = EX.object_id AND IC.COLUMN_NAME = EX.name
LEFT OUTER JOIN (SELECT *
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE CONSTRAINT_NAME LIKE ‘%_PK’) PK
ON IC.TABLE_NAME = PK.TABLE_NAME AND IC.COLUMN_NAME = PK.COLUMN_NAME
LEFT OUTER JOIN (SELECT *
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE CONSTRAINT_NAME LIKE ‘%_FK’) FK
ON IC.TABLE_NAME = FK.TABLE_NAME AND IC.COLUMN_NAME = FK.COLUMN_NAME
ORDER BY SM.TABLE_TYPE, IC.TABLE_NAME, IC.ORDINAL_POSITION
;

Leave a Reply

error: Content is protected !!