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 多对多关系:如何获取表的所有元素及其关系(如果存在)?

如果一个表是自动增量的,你怎么能从一个 sqlite 表的元数据中得到?

如何获取 SQL Server 中的表结构?

如何检索 sql server 内联表值函数的返回值的元数据?