SMO не получает расширенные свойства для индекса - PullRequest
0 голосов
/ 07 июля 2011

Я пытаюсь использовать объекты управления 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

Ответы [ 2 ]

4 голосов
/ 09 августа 2011

Вам нужно обновить коллекции, прежде чем вы сможете ссылаться на их предметы по имени - я знаю - это странно.

Попытка:

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
0 голосов
/ 08 ноября 2011

Ваш код верен, я подозреваю, что для этого индекса тип индекса IndexKeyType.DriPrimaryKey, а SMO по какой-то странной причине выбирает расширенные свойства из объекта первичного ключа, который поддерживает индекс, а не из самого индекса.Это видно, если вы запускаете свой код в SQL Profiler.

...