获取MS SQL库数据字典

显示某个Sql Server某个数据库中所有表或视图的信息 sql server 2000 与 2005
不同 差别在于
红色字部分以下语句为获取所有表信息,替换绿色黑体字”U”为”V”为获取所有视图信息。

图片 1SELECT sysobjects.name AS [table], sysproperties.[value] AS 表说明, 
图片 2      syscolumns.name AS field, properties.[value] AS 字段说明, systypes.name AS type, 
图片 3      syscolumns.length, ISNULL(COLUMNPROPERTY(syscolumns.id, syscolumns.name, 
图片 4      ‘Scale’), 0) AS 小数位数, syscolumns.isnullable AS isnull, 
图片 5      CASE WHEN syscomments.text IS NULL 
图片 6      THEN ” ELSE syscomments.text END AS [Default], 
图片 7      CASE WHEN COLUMNPROPERTY(syscolumns.id, syscolumns.name, ‘IsIdentity’) 
图片 8      = 1 THEN ‘√’ ELSE ” END AS 标识, CASE WHEN EXISTS
图片 9          (SELECT 1
图片 10         FROM sysobjects
图片 11         WHERE xtype = ‘PK’ AND name IN
图片 12                   (SELECT name
图片 13                  FROM sysindexes
图片 14                  WHERE indid IN
图片 15                            (SELECT indid
图片 16                           FROM sysindexkeys
图片 17                           WHERE id = syscolumns.id AND colid = syscolumns.colid))) 
图片 18      THEN ‘√’ ELSE ” END AS 主键
图片 19FROM syscolumns INNER JOIN
图片 20      sysobjects ON sysobjects.id = syscolumns.id INNER JOIN
图片 21      systypes ON syscolumns.xtype = systypes.xtype LEFT OUTER JOIN
图片 22      sysproperties properties ON syscolumns.id = properties.id AND 
图片 23      syscolumns.colid = properties.smallid LEFT OUTER JOIN
图片 24      sysproperties ON sysobjects.id = sysproperties.id AND 
图片 25      sysproperties.smallid = 0 LEFT OUTER JOIN
图片 26      syscomments ON syscolumns.cdefault = syscomments.id
图片 27WHERE (sysobjects.xtype = ‘U’) 
图片 28

Sql Server 2000 版本

 

SELECT Sysobjects.name AS TABLE_NAME, syscolumns.Id, syscolumns.name AS
COLUMN_NAME,systypes.name AS DATA_TYPE, syscolumns.length as
CHARACTER_MAXIMUM_LENGTH, sysproperties.[value] AS
COLUMN_DESCRIPTION, syscomments.text
asCOLUMN_DEFAULT,syscolumns.isnullable as IS_NULLABLE FROM
syscolumnsINNER JOIN systypes ON syscolumns.xtype = systypes.xtype LEFT
JOIN sysobjects ON syscolumns.id = sysobjects.id LEFT OUTER JOIN
sysproperties ON ( sysproperties.smallid = syscolumns.colid AND
sysproperties.id = syscolumns.id) LEFT OUTER JOIN syscomments ON
syscolumns.cdefault = syscomments.id WHERE syscolumns.id IN (SELECT id
FROM SYSOBJECTS WHERE xtype = ‘U’) AND (systypes.name ‘sysname’) ORDER
BY syscolumns.colid

Sql Server 2005版本

SELECT Sysobjects.name AS TABLE_NAME, syscolumns.Id, syscolumns.name AS
COLUMN_NAME,systypes.name AS DATA_TYPE, syscolumns.length as
CHARACTER_MAXIMUM_LENGTH, sys.extended_properties.[value] AS
COLUMN_DESCRIPTION, syscomments.text
asCOLUMN_DEFAULT,syscolumns.isnullable as IS_NULLABLE FROM
syscolumnsINNER JOIN systypes ON syscolumns.xtype = systypes.xtype LEFT
JOIN sysobjects ON syscolumns.id = sysobjects.id LEFT OUTER JOIN
sys.extended_properties ON ( sys.extended_properties.minor_id =
syscolumns.colid AND sys.extended_properties.major_id = syscolumns.id)
LEFT OUTER JOIN syscomments ON syscolumns.cdefault = syscomments.id
WHERE syscolumns.id IN (SELECT id FROM SYSOBJECTS WHERE xtype = ‘U’) AND
(systypes.name ‘sysname’) ORDER BY syscolumns.colid

参考:

发表评论

电子邮件地址不会被公开。 必填项已用*标注