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

2 ответа

Решение

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

Пытаться:

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

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

Другие вопросы по тегам