0

我正在尝试使用 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

4

2 回答 2

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
于 2011-08-09T14:30:33.230 回答
0

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.

于 2011-11-07T21:35:34.793 回答