在数据库内创建的每个用户定义的架构范围内的对象(包括本机编译的标量用户定义函数)都包含一行。
列名称 | 数据类型 | 说明 |
---|---|---|
name | sysname | 对象名称 |
object_id | int | 对象标识号,在数据库中是唯一的 |
principal_id | int | 如果不是架构所有者,则为单个所有者的 ID。 默认情况下,架构包含的对象由架构所有者拥有。 不过,通过使用 ALTER AUTHORIZATION 语句更改所有权可以指定备用所有者。如果没有备用的单个所有者,则为 NULL。如果对象类型为附件1所列类型之一,则为 NULL |
schema_id | int | 包含该对象的架构的 ID。始终包含在 sys 或 INFORMATION_SCHEMA 架构中的架构范围内的系统对象。 |
parent_object_id | int | 此对象所属对象的 ID。0 = 不是子对象。 |
type | char(2) | 对象类型(附件2) |
type_desc | nvarchar | 对对象类型的说明 |
create_date | datetime | 对象的创建日期 |
modify_date | datetime | 上次使用 ALTER 语句修改对象的日期。Date the object was last modified by using an ALTER statement. 如果对象为表或视图,则创建或修改表或视图的聚集索引时,modify_date 也会随之更改。 |
is_ms_shipped | bit | 对象由内部 SQL ServerSQL Server 组件创建。 |
is_published | bit | 对象为发布对象。 |
is_schema_published | bit | 仅发布对象的架构。 |
附件2:对象类型
对象类型 |
---|
C=CHECK 约束 |
D = DEFAULT(约束或独立) |
F = FOREIGN KEY 约束 |
FN = SQL 标量函数 |
FN = SQL 标量函数 |
FS = 程序集 (CLR) 标量函数 |
FT = 程序集 (CLR) 表值函数 |
IF = SQL 内联表值函数 |
IT = 内部表 |
P = SQL 存储过程 |
PC = 程序集(CLR)存储过程 |
PG = 计划指南 |
PK = PRIMARY KEY 约束 |
R = 规则(旧式,独立) |
RF = 复制筛选过程 |
S = 系统基表 |
SN = 同义词 |
SO = 序列对象 |
U = 表(用户定义类型) |
V = 视图 |
EC = Edge 约束 |
SQ = 服务队列 |
TA = 程序集 (CLR) DML 触发器 |
TF = SQL 表值函数 |
TR = SQL DML 触发器 |
TT = 表类型 |
UQ = UNIQUE 约束 |
X = 扩展存储过程 |
ET = 外部表 |
--A. 返回在最近 N 天内修改过的所有对象
USE BHGS;
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() - 2
ORDER BY modify_date;
GO
--B. 返回指定存储过程或函数的参数
USE BHGS;
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('DBO.P_DROP_TABLE')
ORDER BY schema_name, object_name, p.parameter_id;
GO
--C. 返回数据库中的所有用户定义函数
USE BHGS;
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. 返回架构中每个对象的所有者。
USE BHGS;
GO
SELECT 'OBJECT' AS entity_type
,USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name
,name
FROM sys.objects WHERE SCHEMA_NAME(schema_id) = 'dbo'
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) = 'dbo'
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 JOIN sys.schemas AS s
ON s.schema_id = xsc.schema_id
WHERE s.name = 'dbo';
GO