如何从SQL Server 中取得字段说明
SQL Server 2000
你可以在企业管理器中增加字段说明,也可以使用下面的代码:
EXEC
sp_addextendedproperty
'
MS_Description
'
,
'
some description
'
,
'
user
'
,
dbo,
'
table
'
,
table_name,
'
column
'
,
column_name
现在,你就可以得到通过下面的代码得到字段说明:
SELECT
[
Table Name
]
=
i_s.TABLE_NAME,
[
Column Name
]
=
i_s.COLUMN_NAME,
[
Description
]
=
s.value
FROM
INFORMATION_SCHEMA.COLUMNS i_s
LEFT
OUTER
JOIN
sysproperties s
ON
s.id
=
OBJECT_ID
(i_s.TABLE_SCHEMA
+
'
.
'
+
i_s.TABLE_NAME)
AND
s.smallid
=
i_s.ORDINAL_POSITION
AND
s.name
=
'
MS_Description
'
WHERE
OBJECTPROPERTY
(
OBJECT_ID
(i_s.TABLE_SCHEMA
+
'
.
'
+
i_s.TABLE_NAME),
'
IsMsShipped
'
)
=
0
--
AND i_s.TABLE_NAME = 'table_name'
ORDER
BY
i_s.TABLE_NAME, i_s.ORDINAL_POSITION

如果你只关心某一张表,那么上面的TSQL中的注释部份对你就非常有帮助。反过来就会给你所有表中的所有字段。
如果你只需要所有有说明的表,你可以把out join 改成 inner join
SELECT
[
Table Name
]
=
i_s.TABLE_NAME,
[
Column Name
]
=
i_s.COLUMN_NAME,
[
Description
]
=
s.value
FROM
INFORMATION_SCHEMA.COLUMNS i_s
INNER
JOIN
sysproperties s
ON
s.id
=
OBJECT_ID
(i_s.TABLE_SCHEMA
+
'
.
'
+
i_s.TABLE_NAME)
AND
s.smallid
=
i_s.ORDINAL_POSITION
AND
s.name
=
'
MS_Description
'
WHERE
OBJECTPROPERTY
(
OBJECT_ID
(i_s.TABLE_SCHEMA
+
'
.
'
+
i_s.TABLE_NAME),
'
IsMsShipped
'
)
=
0
ORDER
BY
i_s.TABLE_NAME, i_s.ORDINAL_POSITION
SQL Server 2005
在SQL Server 2005 中 sysproperties 表已被废弃,所以上面的代码都不能用。幸运的是他们还是增加了一个系统表给我们 sys.extended_properties,这张表和 sysproperties基本上相似。
SELECT
[
Table Name
]
=
OBJECT_NAME
(c.
object_id
),
[
Column Name
]
=
c.name,
[
Description
]
=
ex.value
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) = 'your_table'
ORDER
BY
OBJECT_NAME
(c.
object_id
), c.column_id
和SQL Server 2000一样,你可以使用注释部份来返回某一张表。
Microsoft Access
在Access中,你可以使用下面的ASP代码来得到某一个字段的说明
<
%
on
error
resume
next
Set
Catalog
=
CreateObject
(
"
ADOX.Catalog
"
)
Catalog.ActiveConnection
=
"
Provider=Microsoft.Jet.OLEDB.4.0;
"
&
_
"
Data Source=<path>/<file>.mdb
"

dsc
=
Catalog.Tables(
"
table_name
"
).Columns(
"
column_name
"
).Properties(
"
Description
"
).Value

if
err.number
<>
0
then
Response.Write
"
<
"
&
err.description
&
"
>
"
else
Response.Write
"
Description =
"
&
dsc
end
if
Set
Catalog
=
nothing
%
>
SQL Server 2000
你可以在企业管理器中增加字段说明,也可以使用下面的代码:





























如果你只关心某一张表,那么上面的TSQL中的注释部份对你就非常有帮助。反过来就会给你所有表中的所有字段。
如果你只需要所有有说明的表,你可以把out join 改成 inner join

















SQL Server 2005
在SQL Server 2005 中 sysproperties 表已被废弃,所以上面的代码都不能用。幸运的是他们还是增加了一个系统表给我们 sys.extended_properties,这张表和 sysproperties基本上相似。


















和SQL Server 2000一样,你可以使用注释部份来返回某一张表。
Microsoft Access
在Access中,你可以使用下面的ASP代码来得到某一个字段的说明















作者:
陆岛工作室