sys.objects (Transact-SQL)
适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库
包含在数据库中创建的每个用户定义的架构范围内的对象的行,包括本地编译的标量用户定义函数。
有关详细信息,请参阅内存中 OLTP 的标量用户定义函数。
注意
sys.objects
不显示 DDL 触发器,因为它们不是架构范围的。 所有触发器(包括 DML 和 DDL)均位于 sys.triggers 中。 sys.triggers
支持对各种触发器应用混合名称范围规则。
列名称 | 数据类型 | 描述 |
---|---|---|
name |
sysname | 对象名称。 |
object_id |
int | 对象标识号。 在数据库中是唯一的。 |
principal_id |
int | 如果不是架构所有者,则为单个所有者的 ID。 默认情况下,架构包含的对象由架构所有者拥有。 但是,可以使用语句更改所有权来指定 ALTER AUTHORIZATION 备用所有者。NULL 如果没有备用的个人所有者。对象 NULL 类型是否为以下值之一:C = 检查约束D = 默认值(约束或独立)F = 外键约束PK = 主键约束R = 规则 (旧样式, 独立)TA = 程序集 (CLR-integration) 触发器TR = SQL 触发器UQ = 唯一约束EC = Edge 约束 |
schema_id |
int | 包含该对象的架构的 ID。 架构范围内的系统对象始终包含在 sys 或 INFORMATION_SCHEMA 架构中。 |
parent_object_id |
int | 此对象所属对象的 ID。0 = 不是子对象。 |
type |
char(2) | 对象类型:AF = 聚合函数 (CLR)C = 检查约束D = 默认值(约束或独立)F = 外键约束FN = SQL 标量函数FS = Assembly (CLR) scalar-functionFT = 程序集 (CLR) 表值函数IF = SQL 内联表值函数 (TVF)IT = 内部表P = SQL 存储过程PC = 程序集 (CLR) 存储过程PG = 计划指南PK = 主键约束R = 规则 (旧样式, 独立)RF = Replication-filter-procedureS = 系统基表SN = 同义词SO = Sequence 对象U = 表(用户定义的)V = 视图适用于:SQL Server 2012 (11.x) 及更高版本 SQ = 服务队列TA = 程序集 (CLR) DML 触发器TF = SQL table-valued-function (TVF)TR = SQL DML 触发器TT = 表类型UQ = 唯一约束X = 扩展存储过程适用于:SQL Server 2014(12.x)及更高版本、Azure SQL 数据库、Azure Synapse Analytics、Analytics 平台系统(PDW) ST = 统计信息树适用于:SQL Server 2016(13.x)及更高版本、Azure SQL 数据库、Azure Synapse Analytics、Analytics Platform System (PDW) ET = 外部表适用于:SQL Server 2017(14.x)及更高版本、Azure SQL 数据库、Azure Synapse Analytics、Analytics 平台系统(PDW) EC = Edge 约束 |
type_desc |
nvarchar(60) | 对对象类型的说明:AGGREGATE_FUNCTION CHECK_CONSTRAINT CLR_SCALAR_FUNCTION CLR_STORED_PROCEDURE CLR_TABLE_VALUED_FUNCTION CLR_TRIGGER DEFAULT_CONSTRAINT EDGE_CONSTRAINT EXTENDED_STORED_PROCEDURE FOREIGN_KEY_CONSTRAINT INTERNAL_TABLE PLAN_GUIDE PRIMARY_KEY_CONSTRAINT REPLICATION_FILTER_PROCEDURE RULE SEQUENCE_OBJECT SERVICE_QUEUE SQL_INLINE_TABLE_VALUED_FUNCTION SQL_SCALAR_FUNCTION SQL_STORED_PROCEDURE SQL_TABLE_VALUED_FUNCTION SQL_TRIGGER SYNONYM SYSTEM_TABLE TYPE_TABLE UNIQUE_CONSTRAINT USER_TABLE VIEW |
create_date |
datetime | 对象的创建日期。 |
modify_date |
datetime | 上次使用 ALTER 语句修改对象的日期。 如果对象为表或视图,则创建或修改表或视图的索引时,modify_date 也会随之更改。 |
is_ms_shipped |
bit | 对象由内部 SQL Server 组件创建。 |
is_published |
bit | 对象为发布对象。 |
is_schema_published |
bit | 仅发布对象的架构。 |
注解
可以将OBJECT_ID、OBJECT_NAME和 OBJECTPROPERTY 内置函数应用于中显示的sys.objects
对象。
此视图的版本与显示系统对象的架构相同,称为 sys.system_objects。 另一个名为 sys.all_objects视图显示系统和用户对象。 所有这三个目录视图的结构都相同。
在此版本的 SQL Server 中,扩展索引(如 XML 索引或空间索引)被视为内部表(sys.objects
是,也是INTERNAL_TABLE
type_desc
)。IT
type
对于扩展索引:
name
是索引表的内部名称parent_object_id
object_id
是基表is_ms_shipped
、is_published
列is_schema_published
和列设置为0
相关系统视图
可以使用特定类型的对象的系统视图来查看对象的子集,例如:
权限
目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。 有关详细信息,请参阅 Metadata Visibility Configuration。
示例
A. 返回在过去 N 天内修改的所有对象
运行以下查询之前,请使用有效值替换 <database_name>
和 <n_days>
。
USE <database_name>;
GO
SELECT name AS object_name,
SCHEMA_NAME(schema_id) AS schema_name,
type_desc,
create_date,
modify_date
FROM sys.objects
WHERE modify_date > GETDATE() - <n_days>
ORDER BY modify_date;
GO
B. 返回指定存储过程或函数的参数
运行以下查询之前,请使用有效名称替换 <database_name>
和 <schema_name.object_name>
。
USE <database_name>;
GO
SELECT SCHEMA_NAME(schema_id) AS schema_name,
o.name AS object_name,
o.type_desc,
p.parameter_id,
p.name AS parameter_name,
TYPE_NAME(p.user_type_id) AS parameter_type,
p.max_length,
p.precision,
p.scale,
p.is_output
FROM sys.objects AS o
INNER JOIN sys.parameters AS p
ON o.object_id = p.object_id
WHERE o.object_id = OBJECT_ID('<schema_name.object_name>')
ORDER BY schema_name,
object_name,
p.parameter_id;
GO
C. 返回数据库中的所有用户定义函数
运行以下查询之前,请使用有效数据库名称替换 <database_name>
。
USE <database_name>;
GO
SELECT name AS function_name,
SCHEMA_NAME(schema_id) AS schema_name,
type_desc,
create_date,
modify_date
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%';
GO
D. 返回架构中每个对象的所有者
运行以下查询之前,请使用有效名称替换所有的 <database_name>
和 <schema_name>
。
USE <database_name>;
GO
SELECT 'OBJECT' AS entity_type,
USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name,
name
FROM sys.objects
WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'TYPE' AS entity_type,
USER_NAME(TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId')) AS owner_name,
name
FROM sys.types
WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'XML SCHEMA COLLECTION' AS entity_type,
COALESCE(USER_NAME(xsc.principal_id), USER_NAME(s.principal_id)) AS owner_name,
xsc.name
FROM sys.xml_schema_collections AS xsc
INNER JOIN sys.schemas AS s
ON s.schema_id = xsc.schema_id
WHERE s.name = '<schema_name>';
GO
相关内容
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈