Как я могу использовать SqlConnection.GetSchema для получения информации о синониме?

С таким кодом:

DataTable schema = conn.GetSchema();
DataTable tables = conn.GetSchema("Tables");
DataTable columns = conn.GetSchema("Columns");

Достаточно много информации о схеме, но версия метаданных (то есть: GetSchema()) ничего не возвращает о синонимах.

Мы сильно используем синонимы в нашей среде. Могу ли я получить информацию о схеме с помощью GetSchema, или мне нужен другой метод?

Ответ 1

Для синонимов SQL Server нет коллекции схем:

Коллекции схем SQL Server

Как представляется, существует способ переопределить коллекции с помощью .NET 3.5. Я никогда этого не делал, поэтому не знаю, работает ли это на самом деле. Основная идея заключается в том, что вы создаете XML файл для определения того, как getschema определяет и запрашивает данные схемы. Затем вы изменяете конфигурацию своих приложений, чтобы использовать этот XML файл для переопределения доступных коллекций.

GetSchema Override

В приведенной ссылке есть примеры добавления коллекции основных ключей в схему. Это выглядит многообещающим, если вы решили использовать getschema. В противном случае вы могли бы создать свои собственные функции схемы и просто запросить sys.synonyms, чтобы получить синонимы.