SELECT A.TABLE_NAME,
C.VALUE AS TABLE_COMMENT,
A.ORDINAL_POSITION,
A.COLUMN_NAME,
B.VALUE AS COLUM_COMMENT,
A.COLUMN_DEFAULT,
A.IS_NULLABLE,
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
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 LIKE 'TB%'
--ORDER BY A.TABLE_NAME,
-- A.ORDINAL_POSITION