我正在尝试使用SQL Server管理对象(SMO)来检索索引上的扩展属性,但检索到的SMO对象具有空的ExtentedProperties集合。 (索引在一个表上。)扩展属性在那里,我检查了T-SQL。此外,扩展属性,例如SMO找到数据库对象。我正在做的就是
Server s = new Server(<connectionObj>);
Database db = s.Databases[<databaseName>];
int extCount = db.Tables[<tableName>]
.Indexes[<indexName>]
.ExtendedProperties
.Count
获得
extCount == 0
我做错了吗?
干杯,
蒂尔曼
PS:这是SQL Server 2005
答案 0 :(得分:4)
您需要刷新集合才能按名称引用其项目 - 我知道 - 这很奇怪。
尝试:
Server s = new Server(<connectionObj>);
Database db = s.Databases[<databaseName>];
db.Tables.Refresh();
db.Tables[<tableName>].Indexes.Refresh();
int extCount = db.Tables[<tableName>]
.Indexes[<indexName>]
.ExtendedProperties
.Count
答案 1 :(得分:0)
您的代码是正确的,我怀疑您的索引类型是该索引的IndexKeyType.DriPrimaryKey,而SMO由于某些奇怪的原因从索引支持的主键对象而不是索引本身获取扩展属性。如果在SQL事件探查器中运行代码,则可以看到。