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:それはSQLServer2005です

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

あなたのコードは正しいです、私はあなたのインデックスタイプがそのインデックスのIndexKeyType.DriPrimaryKeyであると思います、そして何らかの奇妙な理由でSMOはインデックス自体からではなくインデックスがサポートする主キーオブジェクトから拡張プロパティをフェッチします。SQLプロファイラーでコードを実行するとわかります。

于 2011-11-07T21:35:34.793 に答える