如何从SQL Server 中取得字段说明 如何从SQL Server 中取得字段说明
2009-04-30 09:04
423 查看
如何从SQL Server 中取得字段说明
SQL Server 2000
你可以在企业管理器中增加字段说明,也可以使用下面的代码:
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
EXEC sp_addextendedproperty
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
'MS_Description',
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
'some description',
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
'user',
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
dbo,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
'table',
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
table_name,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
'column',
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
column_name
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
现在,你就可以得到通过下面的代码得到字段说明:
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
SELECT
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Table Name] = i_s.TABLE_NAME,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Column Name] = i_s.COLUMN_NAME,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Description] = s.value
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
FROM
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
INFORMATION_SCHEMA.COLUMNS i_s
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
LEFT OUTER JOIN
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
sysproperties s
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ON
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
s.id = OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND s.smallid = i_s.ORDINAL_POSITION
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND s.name = 'MS_Description'
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
WHERE
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-- AND i_s.TABLE_NAME = 'table_name'
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ORDER BY
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
i_s.TABLE_NAME, i_s.ORDINAL_POSITION
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
如果你只关心某一张表,那么上面的TSQL中的注释部份对你就非常有帮助。反过来就会给你所有表中的所有字段。
如果你只需要所有有说明的表,你可以把out join 改成 inner join
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
SELECT
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Table Name] = i_s.TABLE_NAME,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Column Name] = i_s.COLUMN_NAME,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Description] = s.value
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
FROM
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
INFORMATION_SCHEMA.COLUMNS i_s
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
INNER JOIN
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
sysproperties s
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ON
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
s.id = OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND s.smallid = i_s.ORDINAL_POSITION
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND s.name = 'MS_Description'
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
WHERE
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ORDER BY
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
i_s.TABLE_NAME, i_s.ORDINAL_POSITION
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
SQL Server 2005
在SQL Server 2005 中 sysproperties 表已被废弃,所以上面的代码都不能用。幸运的是他们还是增加了一个系统表给我们 sys.extended_properties,这张表和 sysproperties基本上相似。
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
SELECT
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Table Name] = OBJECT_NAME(c.object_id),
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Column Name] = c.name,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Description] = ex.value
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
FROM
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
sys.columns c
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
LEFT OUTER JOIN
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
sys.extended_properties ex
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ON
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ex.major_id = c.object_id
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND ex.minor_id = c.column_id
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND ex.name = 'MS_Description'
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
WHERE
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-- AND OBJECT_NAME(c.object_id) = 'your_table'
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ORDER
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
BY OBJECT_NAME(c.object_id), c.column_id
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
和SQL Server 2000一样,你可以使用注释部份来返回某一张表。
Microsoft Access
在Access中,你可以使用下面的ASP代码来得到某一个字段的说明
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<%
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
on error resume next
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Set Catalog = CreateObject("ADOX.Catalog")
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Catalog.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
"Data Source=<path>/<file>.mdb"
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
dsc = Catalog.Tables("table_name").Columns("column_name").Properties("Description").Value
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
if err.number <> 0 then
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Response.Write "<" & err.description & ">"
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
else
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Response.Write "Description = " & dsc
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
end if
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Set Catalog = nothing
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
%>
作者: 陆岛工作室
SQL Server 2000
你可以在企业管理器中增加字段说明,也可以使用下面的代码:
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
EXEC sp_addextendedproperty
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
'MS_Description',
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
'some description',
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
'user',
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
dbo,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
'table',
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
table_name,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
'column',
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
column_name
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
现在,你就可以得到通过下面的代码得到字段说明:
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
SELECT
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Table Name] = i_s.TABLE_NAME,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Column Name] = i_s.COLUMN_NAME,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Description] = s.value
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
FROM
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
INFORMATION_SCHEMA.COLUMNS i_s
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
LEFT OUTER JOIN
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
sysproperties s
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ON
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
s.id = OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND s.smallid = i_s.ORDINAL_POSITION
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND s.name = 'MS_Description'
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
WHERE
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-- AND i_s.TABLE_NAME = 'table_name'
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ORDER BY
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
i_s.TABLE_NAME, i_s.ORDINAL_POSITION
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
如果你只关心某一张表,那么上面的TSQL中的注释部份对你就非常有帮助。反过来就会给你所有表中的所有字段。
如果你只需要所有有说明的表,你可以把out join 改成 inner join
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
SELECT
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Table Name] = i_s.TABLE_NAME,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Column Name] = i_s.COLUMN_NAME,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Description] = s.value
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
FROM
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
INFORMATION_SCHEMA.COLUMNS i_s
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
INNER JOIN
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
sysproperties s
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ON
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
s.id = OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND s.smallid = i_s.ORDINAL_POSITION
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND s.name = 'MS_Description'
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
WHERE
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ORDER BY
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
i_s.TABLE_NAME, i_s.ORDINAL_POSITION
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
SQL Server 2005
在SQL Server 2005 中 sysproperties 表已被废弃,所以上面的代码都不能用。幸运的是他们还是增加了一个系统表给我们 sys.extended_properties,这张表和 sysproperties基本上相似。
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
SELECT
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Table Name] = OBJECT_NAME(c.object_id),
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Column Name] = c.name,
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
[Description] = ex.value
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
FROM
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
sys.columns c
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
LEFT OUTER JOIN
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
sys.extended_properties ex
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ON
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ex.major_id = c.object_id
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND ex.minor_id = c.column_id
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
AND ex.name = 'MS_Description'
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
WHERE
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-- AND OBJECT_NAME(c.object_id) = 'your_table'
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
ORDER
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
BY OBJECT_NAME(c.object_id), c.column_id
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
和SQL Server 2000一样,你可以使用注释部份来返回某一张表。
Microsoft Access
在Access中,你可以使用下面的ASP代码来得到某一个字段的说明
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<%
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
on error resume next
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Set Catalog = CreateObject("ADOX.Catalog")
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Catalog.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
"Data Source=<path>/<file>.mdb"
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
dsc = Catalog.Tables("table_name").Columns("column_name").Properties("Description").Value
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
if err.number <> 0 then
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Response.Write "<" & err.description & ">"
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
else
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Response.Write "Description = " & dsc
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
end if
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Set Catalog = nothing
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
%>
作者: 陆岛工作室
相关文章推荐
- 如何从SQL Server 中取得字段说明
- 如何从SQL Server 中取得字段说明
- 如何从SQL Server 中取得字段说明
- 取得SQL Server 2005各表、字段的说明等信息的SQL语句
- SQL Server 中取得字段说明(转载)
- [sql server] 如何查询字段的说明
- 教你如何在 sql server 2005 使用 sql 语句获取字段的说明信息
- SQL Server如何保证可空字段中非空值唯一
- SQL Server如何保证可空字段中非空值唯一
- SQL SERVER的字段类型说明
- SQL server插入数据后,如何获取自增长字段的值
- 在SQL server 2000 中 如何更新表中的text、ntext 或 image 字段信息
- SQL SERVER中字段类型及说明
- SQL SERVER如何判断某个字段包含大写字母
- SQL SERVER的字段类型说明
- SQL SERVER的字段类型说明及简单比较
- SQL Server中,如何筛选出某一字段重复的记录?
- SQL Server中如何取得所有的表的表名的列表(摘)
- SQL SERVER的字段类型说明
- SQL Server 下读取 表/字段 的说明备注信息