SMO 不检索索引的扩展属性
我尝试使用 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
I'm trying to use SQL Server Management Objects (SMO) to retrieve an extended property on an index, but the retrieved SMO object has an empty ExtentedProperties collection. (The index is on a table.) The extended property is there, I checked in T-SQL. Also, extended properties, e.g. on the database object are found by SMO. All I'm doing is
Server s = new Server(<connectionObj>);
Database db = s.Databases[<databaseName>];
int extCount = db.Tables[<tableName>]
.Indexes[<indexName>]
.ExtendedProperties
.Count
To get
extCount == 0
Am I doing it wrong?
Cheers,
Tilman
PS: It's SQL Server 2005
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的代码是正确的,我怀疑您的索引类型是 IndexKeyType.DriPrimaryKey 对于该索引,并且 SMO 由于某种奇怪的原因从索引支持的主键对象而不是从索引本身获取扩展属性。如果您在 SQL Profiler 中运行代码,您可以看到这一点。
Your code is correct, I suspect your index type is IndexKeyType.DriPrimaryKey for that index and SMO for some strange reason fetches Extended Properties from the primary key object the index supports rather than from the index itself. You can see that if you run your code while in SQL Profiler.
您需要先刷新集合,然后才能按名称引用它们的项目 - 我知道 - 这很奇怪。
尝试:
You need to refresh the collections before you can reference their items by name - I know - its weird.
Try: