SqlServer: How to get meta-data about tables and their relationships?

谁都会走 提交于 2021-01-28 08:40:57

问题


I was wondering if there was a way (relatively simple I hope) to get information about the table and its attributes and realtionships?

Clarification: I want to grab all tables in the database and get the meta-model for the whole database, tables, column data, indicies, unique constraints, relationships between tables etc.


回答1:


The system has a data dictionary in sys.tables, sys.columns, sys.indexes and various other tables. You can query these tables to get metadata about the database structure. This posting has a script I wrote a few years ago to reverse engineer a database schema. If you take a look at it you can see some examples of how to use the system data dictionary tables.




回答2:


there are a whole bunch of system views in the information_schema schema in sql server 2005+. is there anything in particular you're wanting?

some of those views include: check_contraints, columns, tables, views




回答3:


Try sp_help <tablename>. This will show you foreign key refrences and data about the columns, etc - that is, if you are interested in a specific table, as your question seemed to indicate.




回答4:


If using .NET code is an option SMO is the best way to do it.

It abstracts away all these system views and tables hiding them behind nice and easy to use classes and collections. http://msdn.microsoft.com/en-us/library/ms162169.aspx

This is the same infrastructure SQL Server Management Studio uses itself. It even supports scripting.

Abstraction comes at a cost though so you need maximum performance you'd still have to use system views and custom SQL.




回答5:


You can try to use this library db-meta



来源:https://stackoverflow.com/questions/5568497/sqlserver-how-to-get-meta-data-about-tables-and-their-relationships

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!