Mei笑D小妞 发表于 2016-11-4 09:36:42

SQL SERVER中的sys.objects和sysobjects的区别

转载:http://www.cnblogs.com/jackson-ou/archive/2009/05/27/1490990.html
这三个视图都是存在于SQL Server的每个数据库中。在SQL Server 2000中,它们都是系统表,而不是视图。
关于两个版本中系统表和系统的视图的对应关系,参考:http://technet.microsoft.com/zh-cn/library/ms187997.aspx
sys.all_objects:显示所有架构范围内的用户定义对象和系统对象,参考 http://technet.microsoft.com/zh-cn/library/ms178618.aspx
sys.sysobjects,sys.objects:在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都对应一行,参考http://technet.microsoft.com/zh-cn/library/ms177596.aspx
sys.objects 不显示 DDL 触发器,因为它们不是架构范围内的对象。所有触发器(包括 DML 和 DDL)均位于 sys.triggers 中。sys.triggers 支持对各种触发器应用混合名称范围规则。
在自己的数据库中测试发现,sys.objects,sys.sysobjects视图的内容是完全一致的。
这三个视图的结构比较类似,其中饱含type,id等属性。其中type的取值代表了各种不同的对象类型。对于触发器或者约束对象,parent_obj属性表示父表的id。
Name, ID相关的系统函数:
    SCHEMA_NAME ( [ schema_id ] ):返回与架构 ID 关联的架构名称。
    OBJECT_NAME ( object_id [, database_id ] ):返回架构范围内对象的数据库对象名称。
    OBJECT_ID (object_name [,'object_type' ] )返回架构范围内对象的数据库对象标识号,比包括触发器等;若要返回 DDL 触发器的对象标识号,请使用 SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'。
 
select * from sys.objects --在数据库中创建的每个用户定义的架构范围内的对象在该表中均对应一行。
 
select * from sys.sysobjects--在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都对应一行。
 
"sys.objects是sys.sysobjects的子集" 应该是正确的
 
 
一个是对象表,一个是对象表与其它表相连而形成的视图,便于查询。
下面是从 http://technet.microsoft.com/zh-cn/library/ms187997.aspx
 
系统表
系统视图或函数
视图或函数类型
sysaltfiles
sys.master_files
目录视图
syscacheobjects
sys.dm_exec_cached_plans
sys.dm_exec_plan_attributes
sys.dm_exec_sql_text
sys.dm_exec_cached_plan_dependent_objects
动态管理视图
动态管理视图
动态管理视图
动态管理视图
syscharsets
sys.syscharsets
兼容性视图
sysconfigures
sys.configurations
目录视图
syscurconfigs
sys.configurations
目录视图
sysdatabases
sys.databases
目录视图
sysdevices
sys.backup_devices
目录视图
syslanguages
sys.syslanguages
兼容性视图
syslockinfo
sys.dm_tran_locks
动态管理视图
syslocks
sys.dm_tran_locks
动态管理视图
syslogins
sys.server_principals
sys.sql_logins
目录视图
sysmessages
sys.messages
目录视图
sysoledbusers
sys.linked_logins
目录视图
sysopentapes
sys.dm_io_backup_tapes
动态管理视图
sysperfinfo
sys.dm_os_performance_counters
动态管理视图
sysprocesses
sys.dm_exec_connections
sys.dm_exec_sessions
sys.dm_exec_requests
动态管理视图
动态管理视图
动态管理视图
sysremotelogins
sys.remote_logins
目录视图
sysservers
sys.servers
目录视图

 
页: [1]
查看完整版本: SQL SERVER中的sys.objects和sysobjects的区别