/ / Jak odzyskać istniejące indeksy tabel w SQL Server za pomocą kodu? - sql-server, nhibernate, ado.net, indeksowanie

Jak pobrać istniejące indeksy na tabelach w SQL Server za pomocą kodu? - sql-server, nhibernate, ado.net, indeksowanie

Jako backend używamy NHibernate z SQL Server. Chcę pobrać programowo listę wszystkich indeksów z kilku moich tabel. Czy można to zrobić za pomocą NHibernate lub nawet ADO.Net?

Mogę przeszukiwać tabele sys, aby uzyskać te informacje, ale zastanawiałem się, czy są do tego jakieś interfejsy API.

Wyszukiwanie naprawdę nie zwróciło żadnych konkretnych rozwiązań. Jeśli ktoś zrobił coś podobnego, jakie były twoje ustalenia i twoje ostateczne podejście?

Wszelkie sugestie lub wskazówki będą mile widziane.

Odpowiedzi:

2 dla odpowiedzi № 1

W ADO nie ma API.NET lub NHibernate, ponieważ jest to konstrukcja ściśle związana z implementacją, a niektóre platformy, na których można używać NHibernate lub ADO.NET, w ogóle nie mają tej koncepcji. ADO.NET i NHibernate są abstrakcjami i jako takie będą ukrywać rzeczy (a nawet nie korzystać z niektórych funkcji) w celu przedstawienia ogólnego interfejsu.

Jeśli chcesz .NET API do metadanych programu SQL Server, warto spojrzeć na to SMO (który ma obiekt Table z właściwością Indexes) - jest to część przestrzeni nazw Microsoft.SqlServer (nie System.Data).


3 dla odpowiedzi № 2
select  *
from    sys.indexes
where   object_id = object_id("YourTable")

0 dla odpowiedzi № 3

Sprawdź INFORMACJE_SCHEMA - zawiera, w każdej bazie danych, znaczną liczbę widoków, które dają wiele interesujących informacji o wszystkich obiektach w bazie danych.