系统目录与信息模式

System Catalog vs Information Schema

在查看 SQL Server Management Studio (SSMS) 时,哪个更好,为什么?在某些情况下我们应该使用一个而不是另一个吗?

我分不清它们的区别

INFORMATION_SCHEMA 是为了兼容性,它不会公开有关实例上对象的所有信息。

sys然而,完全暴露了任何相关信息,尽管你确实需要写更多SQL。 INFORMATION_SCHEMA 对新用户来说“更容易”使用,因为像 INFORMATION_SCHEMA.COLUMNS 这样的东西包含 table 的名称、模式、列和对象中的数据类型。要使用 sys 获得它,您必须使用 sys.schemassys.tablessys.columnssys.types.

曾经 在 SQL 服务器文档的 TABLE_SCHEMA 列上作了注释,表明它可能是错误的。今年早些时候,当我在他们的 Github 上质疑它时,这已经改变了。该说明现在指出信息可能不完整,而不是不正确。同样,这是因为 INFORMATION_SCHEMA 没有公开有关对象的所有信息,而 sys 却公开了。

INFORMATION_SCHEMA表是标准表(井视图),提供了相对一致的数据库描述。它们在许多数据库中可用。

系统目录特定于 SQL 服务器。我想这些表可能会在不同版本之间发生变化,尽管这并没有真正发生。

我的偏好是使用 INFORMATION_SCHEMA 表来处理基本内容 -- 例如数据库中有哪些表以及表中有哪些列。

系统表更强大,专为 SQL 服务器设计,因此在其他情况下您需要使用它们。