SqlServer: Как получить метаданные о таблицах и их отношениях? - PullRequest
1 голос
/ 06 апреля 2011

Мне было интересно, есть ли способ (относительно простой, я надеюсь) получить информацию о таблице, ее атрибутах и ​​возможностях?

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

Ответы [ 5 ]

3 голосов
/ 06 апреля 2011

В системе есть словарь данных в sys.tables, sys.columns, sys.indexes и различных других таблицах.Вы можете запросить эти таблицы, чтобы получить метаданные о структуре базы данных. Эта публикация содержит скрипт, который я написал несколько лет назад для обратного проектирования схемы базы данных.Если вы посмотрите на это, то увидите несколько примеров использования таблиц системного словаря данных.

2 голосов
/ 06 апреля 2011

В схеме information_schema в sql server 2005+ есть целая куча системных представлений. есть что-то конкретное, что вы хотите?

некоторые из этих представлений включают в себя: check_contraints, колонны, столы, просмотры

1 голос
/ 06 апреля 2011

Попробуйте sp_help <tablename>.Это покажет вам ссылки на внешние ключи и данные о столбцах и т. Д., То есть, если вы заинтересованы в конкретной таблице, как, по-видимому, указывает ваш вопрос.

0 голосов
/ 17 апреля 2014

Вы можете попробовать использовать эту библиотеку db-meta

0 голосов
/ 14 марта 2012

Если используется код .NET, SMO - лучший способ сделать это.

Он абстрагирует все эти системные представления и таблицы, скрывая их за удобными и простыми в использовании классами и коллекциями. http://msdn.microsoft.com/en-us/library/ms162169.aspx

Это та же инфраструктура, что и сама SQL Server Management Studio. Он даже поддерживает скрипты.

Абстракция обходится дорого, поэтому вам нужна максимальная производительность, вам все равно придется использовать системные представления и пользовательский SQL.

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