`
花花人
  • 浏览: 67965 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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.objectssys.sysobjects视图的内容是完全一致的。

这三个视图的结构比较类似,其中饱含typeid等属性。其中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.objectssys.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

目录视图

 

分享到:
评论

相关推荐

    sql2005转到sql2000时所遇到出错问题时的解决方法

    - SQL Server 2005中使用的“sys.objects”可以替换为SQL Server 2000中的“dbo.sysobjects”。 - 对应字段“object_id”替换为“id”。 ```sql -- 替换示例 SELECT * FROM dbo.sysobjects WHERE id = <原...

    SQLServer实用技巧.docx

    在安装SQL Server过程中遇到“有挂起的操作”提示时,这通常是因为系统中存在未完成的安装或者更新任务。解决方法通常涉及以下几个步骤: 1. **清理挂起的操作**:通过命令行工具或控制面板的应用程序卸载功能,...

    精彩编程与编程技巧-列出 SQL Server 数据库中所有的存储过程...

    在IT领域,特别是数据库管理与开发中,存储过程(Stored Procedure)是SQL Server等数据库管理系统中的一个重要特性。存储过程是一种预编译的SQL语句集合,它可以被当作一个单独的对象在数据库中创建并保存,之后...

    SQL2000与SQL2005语法对比

    在SQL Server的发展历程中,SQL2000和SQL2005是两个重要的版本,它们在语法上有一定的差异和改进。本篇文章将详细对比这两个版本在特定语法和功能上的不同,帮助理解如何在不同版本间进行过渡和适应。 首先,我们来...

    SQL Server 得到数据库中所有表的名称及数据条数.pdf

    在SQL Server中,获取数据库中所有表的名称及其数据条数是常见的管理任务,这对于数据库维护、性能优化和数据量统计至关重要。以下是三种常见的方法来实现这一目标: **方法一:利用`sp_spaceused`存储过程** 这种...

    sql语句获取数据库中的数据库表列.docx

    在SQL Server中,可以使用`sys.databases`系统视图来获取所有数据库的名称。例如: ```sql SELECT name FROM sys.databases; ``` 2. **获取所有用户表**: 用户表指的是由用户创建的表,而不是系统内置的表。...

    访问SQL Server元数据的三种方法

    在SQL Server中,元数据是关于数据库对象如表、视图、索引、存储过程等信息的数据,它描述了数据库的结构和内容。获取元数据是数据库管理和开发中不可或缺的一部分,帮助我们理解数据库的现状,进行数据库设计和优化...

    Oracle和SqlServer系统表操作差异对比

    - SQL Server 使用 `sysobjects` 和 `sysconstraints` 或 `sys.foreign_keys` 来查找主键和外键,而 Oracle 则使用 `user_constraints` 和 `constraint_type`。 9. **查询列名**: - SQL Server 的 `syscolumns` ...

    得到SQL数据库中所有表字段及字段中文描述 (2).docx

    在SQL Server 2005中,我们可以使用`sys.columns`、`sys.types`、`sys.default_constraints`、`sys.extended_properties`、`sys.foreign_key_columns`等系统视图获取更丰富的信息,如最大长度、精度、小数位数,并且...

    得到SQL数据库中所有表字段及字段中文描述 (2).pdf

    以下是如何在SQL Server 2000和SQL Server 2005中实现这一目标的方法。 在SQL Server 2000中,可以使用以下查询来获取表名、字段序号、字段名、是否为主键、字段类型、占用字节数、长度、小数位数、是否允许空、...

    SQL Server 临时表用法 object_id sysobjects tempdb dbo #temp

    在新的SQL Server版本中,`sys.objects`取代了`sysobjects`,提供了更丰富的信息,包括用户定义的架构范围内的所有对象。 在处理临时表时,可以使用`OBJECT_ID`函数来检查临时表是否存在,比如`IF OBJECT_ID('...

    得到SQL数据库中所有表字段及字段中文描述.docx

    在SQL数据库中获取所有表的字段及其中文描述是一项常见的需求,这对于数据库管理和数据分析至关重要。以下将详细介绍如何实现这一目标,以及涉及到的相关SQL语法。 在SQL Server 2000中,可以通过以下查询来获取...

    SQL2005导出导入SQL2000的总结

    这样做可以解决因版本差异引起的语法问题,例如`sys.objects`与`dbo.sysobjects`的区别。 在实际操作中,应根据具体需求和数据库的复杂性选择合适的方法。对于大型数据库,可能需要结合多种方法,并仔细测试以确保...

    获取SQL-Server中的所有数据库用户,数据表,列,备注说明,主外键.pdf

    在SQL Server中,管理和查询数据库信息是数据库管理员和开发人员日常工作中不可或缺的一部分。本文将详细介绍如何获取SQL Server中的各种对象信息,包括数据库用户、数据表、列、备注说明以及主外键。 首先,我们来...

    SQL获取所有数据库名、表名、储存过程以及参数列表

    为了在SQL Server环境中管理多个数据库,了解如何获取所有数据库的名称是非常重要的。这有助于进行备份、恢复操作或是简单地查看服务器上的数据库配置。 **SQL 语句**: ```sql SELECT Name FROM Master.....

    sql语句获取数据库中的数据库表列.pdf

    在SQL Server中,获取数据库、数据表以及列的相关信息是数据库管理员和开发人员日常工作中常见的需求。本篇文章将详细介绍如何使用SQL语句来查询这些信息。 首先,我们可以通过以下SQL语句来获取所有用户表的名称:...

    if exists 判断对象是否存在

    其中 `sysobjects` 更适用于早期版本的 SQL Server,而 `sys.tables` 则适用于 SQL Server 2005 及其之后的版本。 **SQL 代码示例**: ```sql IF EXISTS (SELECT * FROM sys.objects WHERE name = N'[表名]' AND ...

    sql server判断数据库、表、列、视图是否存在

    `sysobjects`系统表(在较旧版本的SQL Server中)或`sys.tables`系统视图(在新版本中)可以用来检查表的存在。例如,查找名为`MyTable`的表: ```sql IF EXISTS (SELECT * FROM sys.objects WHERE id = object_...

    sqlserver数据库中的表、字段sql语句

    `sys.objects`包含了`sysobjects`的所有信息,同时支持更多现代特性和SQL Server的扩展。 另一方面,`syscolumns`视图提供了关于表和视图中列的详细信息,包括: 1. `name`: 列名,每个表或视图的列都有其独特的...

    sql server中判断表或临时表是否存在的方法

    在SQL Server中,判断表或临时表是否存在是数据库管理和开发中的常见需求,这有助于避免重复创建或误操作。以下是一些常用的方法: 1. **判断数据表是否存在**: - 方法一:使用`object_id()`函数。这个函数返回...

Global site tag (gtag.js) - Google Analytics