SMO 不检索索引的扩展属性

发布于 2024-11-19 09:37:27 字数 551 浏览 2 评论 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:这是 SQL Server 2005

I'm trying to use SQL Server Management Objects (SMO) to retrieve an extended property on an index, but the retrieved SMO object has an empty ExtentedProperties collection. (The index is on a table.) The extended property is there, I checked in T-SQL. Also, extended properties, e.g. on the database object are found by SMO. All I'm doing is

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

To get

extCount == 0

Am I doing it wrong?

Cheers,

Tilman

PS: It's SQL Server 2005

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏天碎花小短裙 2024-11-26 09:37:28

您的代码是正确的,我怀疑您的索引类型是 IndexKeyType.DriPrimaryKey 对于该索引,并且 SMO 由于某种奇怪的原因从索引支持的主键对象而不是从索引本身获取扩展属性。如果您在 SQL Profiler 中运行代码,您可以看到这一点。

Your code is correct, I suspect your index type is IndexKeyType.DriPrimaryKey for that index and SMO for some strange reason fetches Extended Properties from the primary key object the index supports rather than from the index itself. You can see that if you run your code while in SQL Profiler.

怎樣才叫好 2024-11-26 09:37:27

您需要先刷新集合,然后才能按名称引用它们的项目 - 我知道 - 这很奇怪。

尝试:

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

You need to refresh the collections before you can reference their items by name - I know - its weird.

Try:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文