[转载]如何从SQL Server 中取得字段说明 - Goodspeed - 博客园

baacloud免费翻墙vpn注册使用

[转载]如何从SQL Server 中取得字段说明 – Goodspeed – 博客园.

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_idIsMsShipped)=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 
&lt; & err.description & &gt;
else
Response.Write 
Description =  & dsc
end if
Set Catalog = nothing
%
>

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏