我有一个名为视图PersonOverview
其中有一堆列; 这是一个完全正常的观点,没有什么特别的地方。
我增加了一个称为扩展属性FlexGridHide
具有值1
到DatenbereichCD
使用该视图的列中。
EXEC sys.sp_addextendedproperty
@name = N'FlexGridHide',
@value = N'1',
@level0type = N'SCHEMA', @level0name = dbo,
@level1type = N'VIEW', @level1name = vPersonOverview,
@level2type = N'COLUMN', @level2name = DatenbereichCD;
我可以找到的SQL Server扩展属性 - 没问题 - 它的存在。
但是,当我从视图数据加载到一个DataTable
,我显然不能够真正宣读扩展属性:
string sqlSelect = @"SELECT TOP 5 DatenbereichCD FROM dbo.vPersonOverview";
DataTable personUebersicht = new DataTable();
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MYDB"].ConnectionString))
using (SqlCommand cmd = new SqlCommand(sqlSelect, con))
using (SqlDataAdapter dap = new SqlDataAdapter(cmd))
{
dap.Fill(personUebersicht);
}
DataColumn datenbereichCD = personUebersicht.Columns["DatenbereichCD"];
int extendedProps = datenbereichCD.ExtendedProperties.Count;
该连接工作得很好,在查询被执行就好了,因为预期收益五排,列存在,并且一切似乎都很好-除了我没有得到的任何值ExtendedProperties
的收藏- .Count
始终为0。
有任何想法吗? 有什么我可以做真正得到这些扩展属性? 连接字符串参数或对财产SqlCommand
或晦涩的东西?
更新:未经训练的无知,已经Extended Properties
上的SQL Server列, Extended Properties
在ADO.NET DataColumn
排序类型的建议,这些SQL Server扩展属性将被加载到ADO.NET扩展性-但真的没有按”不像是会是这样的 - 不错啊.....
最后我用第二个查询,凯文建议-但因为我需要获得表和视图扩展属性,你必须指定你要寻找的使用fn_listextendedproperty
函数,我却选择查询sys.extended_properties
因为我需要的信息系统目录视图。 这这里是我的查询,我使用得到我需要有关从SQL Server扩展属性的信息:
SELECT
ep.class, ep.class_desc, ep.name, ep.value,
SchemaName = s.name,
ObjectName = o.name,
ColumnName = c.Name,
ObjectType = o.type,
ObjectTypeDesc = o.type_desc
FROM sys.extended_properties ep
INNER JOIN sys.objects o ON ep.major_id = o.object_id
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
INNER JOIN sys.columns c ON ep.major_id = c.object_id AND ep.minor_id = c.column_id