系统基表

系统基表是基础表,用于实际存储特定数据库的元数据。在此方面,master 数据库有些特别,因为它包含一些在其他任何数据库中都找不到的表。这些表包含服务器范围内的持久化元数据。Resource 数据库的基表架构与其他任一非 master 数据库的基表架构相同。但是,由于 Resource 数据库不可见,因此用户无法使用或连接到该数据库。有关 Resource 数据库的详细信息,请参阅 Resource 数据库

重要说明重要提示

系统基表仅在 SQL Server 数据库引擎内使用,并且不能用于一般客户。随时可能对其进行更改,不保证兼容性。

系统基表元数据

如果被授权者对数据库拥有 CONTROL、ALTER 或 VIEW DEFINITION 权限,则可以在 sys.objects 目录视图中查看系统基表元数据。被授权者也可以通过使用诸如 OBJECT_NAMEOBJECT_ID 等内置函数,对系统基表的名称和对象 ID 进行解析。

若要绑定到系统基表,用户必须通过使用专用管理员连接 (DAC) 连接到 SQL Server 实例。如果在没有使用 DAC 进行连接的情况下尝试从系统基表执行 SELECT 查询,则会引发错误。

重要说明重要提示

通过使用 DAC 访问系统基表的功能是专门为 Microsoft 人员设计的,它不是支持的客户方案。

系统基表

下表列出并描述了 SQL Server 中的每个系统基表。

基表

说明

sys.sysschobjs

存在于每个数据库中。每一行表示数据库中的一个对象。

sys.sysbinobjs

存在于每个数据库中。数据库中的每个 Service Broker 实体都存在对应的一行。Service Broker 实体包括以下内容:

  • 消息类型

  • 服务约定

  • 服务

名称和类型使用固定的二进制排序规则。

sys.sysclsobjs

存在于每个数据库中。共享相同通用属性的每个分类实体均存在对应的一行,这些属性包括以下内容:

  • 程序集

  • 备份设备

  • 全文目录

  • 分区函数

  • 分区方案

  • 文件组

  • 模糊处理键

sys.sysnsobjs

存在于每个数据库中。每个命名空间范围内的实体均存在对应的一行。此表用于存储 XML 集合实体。

sys.syscolpars

存在于每个数据库中。表、视图或表值函数的每个列均存在对应的一行。

  • 过程或函数的每个参数也存在对应的行。

sys.systypedsubobjs

存在于每个数据库中。每个类型化的子实体均存在对应的一行。当前,只有分区函数的参数属于此类别。

sys.sysidxstats

存在于每个数据库中。表和索引视图的每个索引或统计信息均存在对应的一行

注意注意
每个索引(除了堆)均与同名统计信息关联。

sys.sysiscols

存在于每个数据库中。每个持久化索引和统计信息列均存在对应的一行。

sys.sysscalartypes

存在于每个数据库中。每个用户定义类型或系统类型均存在对应的一行。

sys.sysdbreg

仅存在于 master 数据库中。每个注册数据库均存在对应的一行。

sys.sysxsrvs

仅存在于 master 数据库中。每个本地服务器、链接服务器或远程服务器均存在对应的一行。

sys.sysrmtlgns

此系统基表仅存在于 master 数据库中。每个远程登录映射均存在对应的一行。这用于将声明来自对应服务器的传入登录映射到实际本地登录。

sys.syslnklgns

仅存在于 master 数据库中。每个链接登录映射均存在对应的一行。链接登录映射由远程过程调用和分布式查询使用,从本地服务器发出到对应的链接服务器。

sys.sysxlgns

仅存在于 master 数据库中。每个服务器主体均存在对应的一行。

sys.sysdbfiles

存在于每个数据库中。如果列 dbid 为零,则该行表示属于此数据库的文件。在 master 数据库中,列 dbid 可以是非零值。如果是这样,该行表示主文件。

sys.sysusermsg

仅存在于 master 数据库中。每一行表示用户定义的错误消息。

sys.sysprivs

存在于每个数据库中。每个数据库或服务器级权限均存在对应的一行。

注意注意
服务器级权限存储在 master 数据库中。

sys.sysowners

存在于每个数据库中。每一行表示一个数据库主体。

sys.sysobjkeycrypts

存在于每个数据库中。每个与对象关联的对称密钥、加密或加密属性均存在对应的一行。

sys.syscerts

存在于每个数据库中。数据库中的每个证书均存在对应的一行。

sys.sysasymkeys

存在于每个数据库中。每一行表示一个非对称密钥。

sys.ftinds

存在于每个数据库中。数据库中的每个全文索引均存在对应的一行。

sys.sysxprops

存在于每个数据库中。每个扩展属性均存在对应的一行。

sys.sysallocunits

存在于每个数据库中。每个存储分配单元均存在对应的一行。

sys.sysrowsets

存在于每个数据库中。索引或堆的每个分区行集均存在对应的一行。

sys.sysrowsetrefs

存在于每个数据库中。行集引用的每个索引均存在对应的一行。

sys.syslogshippers

仅存在于 master 数据库中。每个数据库镜像见证服务器均存在对应的一行。

sys.sysremsvcbinds

存在于每个数据库中。每个远程服务绑定均存在对应的一行。

sys.sysconvgroup

存在于每个数据库中。Service Broker 中的每个服务实例均存在对应的一行。

sys.sysxmitqueue

存在于每个数据库中。每个 Service Broker 传输队列均存在对应的一行。

sys.sysdesend

存在于每个数据库中。Service Broker 会话的每个发送端点均存在对应的一行。

sys.sysdercv

存在于每个数据库中。Service Broker 会话的每个接收端点均存在对应的一行。

sys.sysendpts

仅存在于 master 数据库中。服务器中创建的每个端点均存在对应的一行。

sys.syswebmethods

仅存在于 master 数据库中。对服务器中创建的启用 SOAP 的 HTTP 端点定义的每个 SOAP 方法均存在对应的一行。

sys.sysqnames

存在于每个数据库中。4 字节 ID 标记的每个命名空间或限定名均存在对应的一行。

sys.sysxmlcomponent

存在于每个数据库中。每一行表示一个 XML 架构组件。

sys.sysxmlfacet

存在于每个数据库中。具有 XML 类型定义的每个 XML 方面(限制)均存在对应的一行。

sys.sysxmlplacement

存在于每个数据库中。XML 组件的每个 XML 位置均存在对应的一行。

sys.syssingleobjrefs

存在于每个数据库中。每个常规 N 到 1 引用均存在对应的一行。

sys.sysmultiobjrefs

存在于每个数据库中。每个常规 N 到 N 引用均存在对应的一行。

sys.sysobjvalues

存在于每个数据库中。实体的每个常规值属性均存在对应的一行。

sys.sysguidrefs

存在于每个数据库中。每个 GUID 分类 ID 引用均存在对应的一行。