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.