/*
1.获取所有数据库名:
Select Name FROM Master..SysDatabases ORDER BY Name
2.获取所有表名:
Select Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY Name
XType='U':表示所有用户表;
XType='S':表示所有系统表;
3.获取所有字段名:
Select Name FROM SysColumns Where id=Object_Id('TableName')
*/
SELECT
表名 = CASE WHEN A.COLORDER=1 THEN D.NAME ELSE ' ' END,
表说明 = CASE WHEN A.COLORDER=1 THEN ISNULL(F.VALUE,' ') ELSE ' ' END,
字段序号 = A.COLORDER,
字段名 = A.NAME,
标识 = CASE WHEN COLUMNPROPERTY( A.ID,A.NAME,'ISIDENTITY ')=1 THEN '√'ELSE ' ' END,
主键 = CASE WHEN EXISTS(Select 1 FROM SYSOBJECTS Where XTYPE='PK ' AND PARENT_OBJ=A.ID AND NAME IN (
SELECT NAME FROM SYSINDEXES Where INDID IN(
SELECT INDID FROM SYSINDEXKEYS Where ID = A.ID AND COLID=A.COLID))) THEN '√' ELSE ' ' END,
类型 = B.NAME,
字段长度 = A.LENGTH,
精度 = COLUMNPROPERTY(A.ID,A.NAME,'PRECISION '),
小数位数 = ISNULL(COLUMNPROPERTY(A.ID,A.NAME,'SCALE '),0),
允许空 = CASE WHEN A.ISNULLABLE=1 THEN '√'ELSE ' ' END,
缺省值 = ISNULL(E.TEXT,' '),
字段说明 = ISNULL(G.[VALUE],' ')
FROM
SYSCOLUMNS A
LEFT JOIN SYSTYPES B
ON A.XUSERTYPE=B.XUSERTYPE
INNER JOIN SYSOBJECTS D
ON A.ID=D.ID AND D.XTYPE='U ' AND D.NAME<>'DTPROPERTIES '
LEFT JOIN SYSCOMMENTS E
ON A.CDEFAULT=E.ID
LEFT JOIN sys.extended_properties G
ON A.ID=G.major_id AND A.COLID=G.minor_id
LEFT JOIN sys.extended_properties F
ON D.ID=F.major_id AND F.minor_id=0