2011-07-07 6 views
0

SQL Server Management Objects(SMO)を使用してインデックスの拡張プロパティを取得しようとしましたが、取得されたSMOオブジェクトに空のExtentedPropertiesコレクションがあります。 (インデックスはテーブルにあります)。拡張プロパティがあり、T-SQLをチェックしました。また、拡張された特性、例えば、 SMOによってデータベースオブジェクト上に存在します。私がやっているすべてはSMOはインデックスの拡張プロパティを取得しません

extCount == 0 

私はそれが間違ってやって取得するには

Server s = new Server(<connectionObj>); 
Database db = s.Databases[<databaseName>]; 
int extCount = db.Tables[<tableName>] 
       .Indexes[<indexName>] 
       .ExtendedProperties 
       .Count 

のですか?

乾杯、

ティルマン

PS:それは2005

+0

コードが正しいように見えます。あなたのインデックスは実際にいくつかの拡張プロパティが定義されていることを100%確信していますか? –

+0

fn_listextendedproperty( 'MS_Description'、 'SCHEMA'、 'dbo'、 'TABLE'、 'T3_Index'、 'INDEX'、 'PK_T3_Index')から*を選択すると、プロパティが存在します。 – user812775

答えて

4

SQL Serverのだあなたは名前で自分のアイテムを参照することができます前に、コレクションを更新する必要がある - 私は知っている - その奇妙な。

試してみてください。

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

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

関連する問題