2015-08-10 2 views
10

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

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

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

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

+1

GetSchema() - очень плохая вещь, которая сообщает, что 5% данных базы данных (это даже две версии для другой БД, чем для SQL Server). Я предлагаю вам использовать 'sys.synonyms', которые описаны здесь: https://msdn.microsoft.com/en-us/library/ms189458.aspx –

ответ

3

Существует не набор схем для синонимов для SQL Server:

SQL Server Schema Collections

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

GetSchema Override

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

+0

Спасибо, извините за поздний ответ. Я боялся этого. Я благодарен за предложение, но за ограниченное использование, которое я делаю из этого, я думаю, что вернусь к старой трюке с написанием запроса, чтобы прочитать представления схемы информации. –

Смежные вопросы