Как получить существующие индексы для таблиц в SQL Server, используя код? - PullRequest
2 голосов
/ 17 августа 2011

Мы используем NHibernate с SQL Server для нашего бэкэнда.Я хочу получить список всех индексов для нескольких моих таблиц программным способом.Есть ли способ сделать это с помощью NHibernate или даже ADO.Net?

Я могу запросить таблицы sys, чтобы получить эту информацию, но мне было интересно, есть ли какие-либо API для этого.

Поиск не дал никаких конкретных решений.Если кто-то сделал что-то подобное, каковы были ваши выводы и ваш последний подход?

Любые предложения или указатели будут высоко оценены.

Ответы [ 3 ]

3 голосов
/ 17 августа 2011
select  *
from    sys.indexes
where   object_id = object_id('YourTable')
2 голосов
/ 17 августа 2011

Для этого нет ни API, ни ADO.NET, ни NHibernate, потому что это конструкция, в значительной степени зависящая от реализации, и на некоторых платформах, с которыми вы можете использовать NHibernate или ADO.NET, такая концепция вообще отсутствует.ADO.NET и NHibernate являются абстракциями, и, как таковые, они собираются скрывать вещи (или даже не использовать некоторые функции) в интересах представления общего интерфейса.

Если вы хотите, чтобы .NET APIМетаданные SQL Server, на которые нужно обратить внимание: SMO (который имеет объект Table со свойством Indexes) - это часть пространства имен Microsoft.SqlServer (не System.Data).

0 голосов
/ 17 августа 2011

Проверьте INFORMATION_SCHEMA - в каждой базе данных содержится значительное количество представлений, которые дают вам много интересной информации обо всех объектах в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...