SqlServer:如何获取有关表及其关系的元数据?
Posted
技术标签:
【中文标题】SqlServer:如何获取有关表及其关系的元数据?【英文标题】:SqlServer: How to get meta-data about tables and their relationships? 【发布时间】:2011-04-06 14:58:34 【问题描述】:我想知道是否有一种方法(我希望相对简单)来获取有关表及其属性和关系的信息?
澄清:我想获取数据库中的所有表,并获取整个数据库、表、列数据、索引、唯一约束、表之间的关系等的元模型。
【问题讨论】:
【参考方案1】:系统在 sys.tables、sys.columns、sys.indexes 和其他各种表中都有一个数据字典。您可以查询这些表以获取有关数据库结构的元数据。 This posting 有一个我几年前编写的脚本,用于对数据库模式进行逆向工程。如果你看一下,你会看到一些如何使用系统数据字典表的例子。
【讨论】:
【参考方案2】:在 sql server 2005+ 的 information_schema 模式中有一大堆系统视图。你有什么特别想要的吗?
其中一些观点包括: 检查约束, 列, 表, 意见
【讨论】:
【参考方案3】:试试sp_help <tablename>
。这将向您显示外键引用和有关列的数据等 - 也就是说,如果您对特定表感兴趣,正如您的问题所表明的那样。
【讨论】:
对于所有表格,您也可以这样做EXEC sp_msforeachtable 'sp_help ?'
@JNK - 喜欢你的 Gravatar - 如果有任何关于诊断 AE-35 单元故障的问题,我也会推荐你的专业知识。 :)【参考方案4】:
如果可以选择使用 .NET 代码,SMO 是最好的方法。
它抽象出所有这些系统视图和表格,将它们隐藏在漂亮且易于使用的类和集合后面。 http://msdn.microsoft.com/en-us/library/ms162169.aspx
这与 SQL Server Management Studio 自身使用的基础架构相同。它甚至支持脚本。
尽管抽象是有代价的,因此您需要最高性能,但仍然必须使用系统视图和自定义 SQL。
【讨论】:
【参考方案5】:你可以尝试使用这个库db-meta
【讨论】:
以上是关于SqlServer:如何获取有关表及其关系的元数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取有关当前执行程序 Apache-Spark 的元数据?
Slick 3 多对多关系:如何获取表的所有元素及其关系(如果存在)?