简单的3个SQL视图搞定所有SqlServer数据库字典
(2007-11-29更新)网上有很多SQL SERVER数据库字典的SQL语句,七零八落,我在工作整理了一下思路,总结SQL代码如下。数据库字典包括表结构(分2K和2005)、
索引和主键.外键.约束.视图.函数.存储过程.触发器.规则。可以在企业管理器、查询分析器中简单执行,直接了当的查出SQL2K及SQL2005的所有数据字典,方便文档的编写,希望对大家有帮助。
1. SqlServer2000数据库字典--表结构.sql
 SELECT
?
TOP
?
100
?
PERCENT
?
--
a.id,?

??????
CASE
?
WHEN
?a.colorder?
=
?
1
?
THEN
?d.name?
ELSE
?
''
?
END
?
AS
?表名,?
 ??????
CASE
?
WHEN
?a.colorder?
=
?
1
?
THEN
?
isnull
(f.value,?
''
)?
ELSE
?
''
?
END
?
AS
?表说明,?
 ??????a.colorder?
AS
?字段序号,?a.name?
AS
?字段名,?
CASE
?
WHEN
?
COLUMNPROPERTY
(a.id,?
 ??????a.name,?
'
IsIdentity
'
)?
=
?
1
?
THEN
?
'
√
'
?
ELSE
?
''
?
END
?
AS
?标识,?
 ??????
CASE
?
WHEN
?
EXISTS
 ??????????(
SELECT
?
1
 ?????????
FROM
?dbo.sysindexes?si?
INNER
?
JOIN
 ???????????????dbo.sysindexkeys?sik?
ON
?si.id?
=
?sik.id?
AND
?si.indid?
=
?sik.indid?
INNER
?
JOIN
 ???????????????dbo.syscolumns?sc?
ON
?sc.id?
=
?sik.id?
AND
?sc.colid?
=
?sik.colid?
INNER
?
JOIN
 ???????????????dbo.sysobjects?so?
ON
?so.name?
=
?si.name?
AND
?so.xtype?
=
?
'
PK
'
 ?????????
WHERE
?sc.id?
=
?a.id?
AND
?sc.colid?
=
?a.colid)?
THEN
?
'
√
'
?
ELSE
?
''
?
END
?
AS
?主键,?
 ??????b.name?
AS
?类型,?a.length?
AS
?长度,?
COLUMNPROPERTY
(a.id,?a.name,?
'
PRECISION
'
)?
 ??????
AS
?精度,?
ISNULL
(
COLUMNPROPERTY
(a.id,?
'
Scale
'
),?
0
)?
AS
?小数位数,?
 ??????
CASE
?
WHEN
?a.isnullable?
=
?
1
?
THEN
?
'
√
'
?
ELSE
?
''
?
END
?
AS
?允许空,?
ISNULL
(e.
text
,?
''
)?
 ??????
AS
?默认值,?
ISNULL
(g.
[
value
]
,?
''
)?
AS
?字段说明,?d.crdate?
AS
?创建时间,?
 ??????
CASE
?
WHEN
?a.colorder?
=
?
1
?
THEN
?d.refdate?
ELSE
?
NULL
?
END
?
AS
?更改时间

FROM
?dbo.syscolumns?a?
LEFT
?
OUTER
?
JOIN
 ??????dbo.systypes?b?
ON
?a.xtype?
=
?b.xusertype?
INNER
?
JOIN
 ??????dbo.sysobjects?d?
ON
?a.id?
=
?d.id?
AND
?d.xtype?
=
?
'
U
'
?
AND
?
 ??????d.status?
>=
?
0
?
LEFT
?
OUTER
?
JOIN
 ??????dbo.syscomments?e?
ON
?a.cdefault?
=
?e.id?
LEFT
?
OUTER
?
JOIN
 ??????dbo.sysproperties?g?
ON
?a.id?
=
?g.id?
AND
?a.colid?
=
?g.smallid?
AND
?
 ??????g.name?
=
?
'
MS_Description
'
?
LEFT
?
OUTER
?
JOIN
 ??????dbo.sysproperties?f?
ON
?d.id?
=
?f.id?
AND
?f.smallid?
=
?
0
?
AND
?
 ??????f.name?
=
?
'
MS_Description
'

ORDER
?
BY
?d.name,?a.colorder
????SqlServer2005数据库字典--表结构.sql
 SELECT
?
TOP
?
100
?
PERCENT
?
--
a.id,?
 ??????
CASE
?
WHEN
?a.colorder?
=
?
1
?
THEN
?d.refdate?
ELSE
?
NULL
?
END
?
AS
?更改时间

FROM
?dbo.syscolumns?a?
LEFT
?
OUTER
?
JOIN
 ??????dbo.systypes?b?
ON
?a.xtype?
=
?b.xusertype?
INNER
?
JOIN
 ??????dbo.sysobjects?d?
ON
?a.id?
=
?d.id?
AND
?d.xtype?
=
?
'
U
'
?
AND
?
 ??????d.status?
>=
?
0
?
LEFT
?
OUTER
?
JOIN
 ??????dbo.syscomments?e?
ON
?a.cdefault?
=
?e.id?
LEFT
?
OUTER
?
JOIN
 ??????sys.extended_properties?g?
ON
?a.id?
=
?g.major_id?
AND
?a.colid?
=
?g.minor_id?
AND
?
 ??????g.name?
=
?
'
MS_Description
'
?
LEFT
?
OUTER
?
JOIN
 ??????sys.extended_properties?f?
ON
?d.id?
=
?f.major_id?
AND
?f.minor_id?
=
?
0
?
AND
?
 ??????f.name?
=
?
'
MS_Description
'

ORDER
?
BY
?d.name,?字段序号
2. SqlServer数据库字典--索引.sql
 SELECT
?
TOP
?
100
?
PERCENT
?
--
a.id,?

??????
CASE
?
WHEN
?b.keyno?
=
?
1
?
THEN
?c.name?
ELSE
?
''
?
END
?
AS
?表名,?
 ??????
CASE
?
WHEN
?b.keyno?
=
?
1
?
THEN
?a.name?
ELSE
?
''
?
END
?
AS
?索引名称,?d.name?
AS
?列名,?
 ??????b.keyno?
AS
?索引顺序,?
CASE
?indexkey_property(c.id,?b.indid,?b.keyno,?
'
isdescending
'
)?
 ??????
WHEN
?
1
?
THEN
?
'
降序
'
?
WHEN
?
0
?
THEN
?
'
升序
'
?
END
?
AS
?排序,?
CASE
?
WHEN
?p.id?
IS
?
NULL
?
 ??????
THEN
?
''
?
ELSE
?
'
√
'
?
END
?
AS
?主键,?
CASE
?
INDEXPROPERTY
(c.id,?
'
IsClustered
'
)?
 ??????
WHEN
?
1
?
THEN
?
'
√
'
?
WHEN
?
0
?
THEN
?
''
?
END
?
AS
?聚集,?
'
IsUnique
'
)?
WHEN
?
1
?
THEN
?
'
√
'
?
WHEN
?
0
?
THEN
?
''
?
END
?
AS
?唯一,?
 ??????
CASE
?
WHEN
?e.id?
IS
?
NULL
?
THEN
?
''
?
ELSE
?
'
√
'
?
END
?
AS
?唯一约束,?
 ??????a.OrigFillFactor?
AS
?填充因子,?c.crdate?
AS
?创建时间,?c.refdate?
AS
?更改时间

FROM
?dbo.sysindexes?a?
INNER
?
JOIN
 ??????dbo.sysindexkeys?b?
ON
?a.id?
=
?b.id?
AND
?a.indid?
=
?b.indid?
INNER
?
JOIN
 ??????dbo.syscolumns?d?
ON
?b.id?
=
?d.id?
AND
?b.colid?
=
?d.colid?
INNER
?
JOIN
 ??????dbo.sysobjects?c?
ON
?a.id?
=
?c.id?
AND
?c.xtype?
=
?
'
U
'
?
LEFT
?
OUTER
?
JOIN
 ??????dbo.sysobjects?e?
ON
?e.name?
=
?a.name?
AND
?e.xtype?
=
?
'
UQ
'
?
LEFT
?
OUTER
?
JOIN
 ??????dbo.sysobjects?p?
ON
?p.name?
=
?a.name?
AND
?p.xtype?
=
?
'
PK
'

WHERE
?(
OBJECTPROPERTY
(a.id,?N
'
IsUserTable
'
)?
=
?
1
)?
AND
?(
OBJECTPROPERTY
(a.id,?
 ??????N
'
IsMSShipped
'
)?
=
?
0
)?
AND
?(
INDEXPROPERTY
(a.id,?
'
IsAutoStatistics
'
)?
=
?
0
)

ORDER
?
BY
?c.name,?b.keyno
3. SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql
 SELECT
?
DISTINCT
?
 ??????
TOP
?
100
?
PERCENT
?
isnull
(p.name,
''
)?
AS
?父对象,?o.xtype,?
 ??????
CASE
?o.xtype?
WHEN
?
'
C
'
?
THEN
?
'
CHECK?约束
'
?
WHEN
?
'
D
'
?
THEN
?
'
默认值或DEFAULT约束
'
 ???????
WHEN
?
'
F
'
?
THEN
?
'
FOREIGNKEY约束
'
?
WHEN
?
'
L
'
?
THEN
?
'
日志
'
?
WHEN
?
'
FN
'
?
THEN
?
'
标量函数
'
 ???????
WHEN
?
'
IF
'
?
THEN
?
'
内嵌表函数
'
?
WHEN
?
'
P
'
?
THEN
?
'
存储过程
'
?
WHEN
?
'
PK
'
?
THEN
?
'
PRIMARYKEY约束
'
 ???????
WHEN
?
'
RF
'
?
THEN
?
'
复制筛选存储过程
'
?
WHEN
?
'
S
'
?
THEN
?
'
系统表
'
?
WHEN
?
'
TF
'
?
THEN
?
'
表函数
'
 ???????
WHEN
?
'
TR
'
?
THEN
?
'
触发器
'
?
WHEN
?
'
U
'
?
THEN
?
'
用户表
'
?
WHEN
?
'
UQ
'
?
THEN
?
'
UNIQUE?约束
'
 ???????
WHEN
?
'
V
'
?
THEN
?
'
视图
'
?
WHEN
?
'
X
'
?
THEN
?
'
扩展存储过程
'
?
WHEN
?
'
R
'
?
THEN
?
'
规则
'
?
ELSE
?
NULL
 ???????
END
?
AS
?类型,?o.name?
AS
?对象名,?o.crdate?
AS
?创建时间,?o.refdate?
AS
?更改时间,?
 ??????c.
text
?
AS
?声明语句,
OBJECTPROPERTY
(o.id,?N
'
IsMSShipped
'
)

FROM
?dbo.sysobjects?o?
Left
?
JOIN
 ??????dbo.sysobjects?p?
ON
?o.parent_obj?
=
?p.id?
LEFT
?
OUTER
?
JOIN
 ??????dbo.syscomments?c?
ON
?o.id?
=
?c.id

WHERE
?
--
(o.xtype?IN?('C','D','F','PK','UQ','L','FN','IF','TF','TR','P','R','RF','X','S','U','V'))?AND?

??????(
OBJECTPROPERTY
(o.id,?N
'
IsMSShipped
'
)?
=
?
0
)?
AND
?(
isnull
(p.name,
''
)?
<>
?N
'
dtproperties
'
)

ORDER
?
BY
?o.xtype?
DESC
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|