SQL Server数据库sysobjects表详解
沉沙 2018-05-09 来源 : 阅读 3016 评论 0

摘要:SQL Server数据库的一切信息都保存在它的系统表格里。本文主要讲解SQL Server数据库的sysobjects表,帮助大家更好的掌握SQL Server数据库。


SQL Server数据库的一切信息都保存在它的系统表格里。

在大多数情况下,对你最有用的两个列是Sysobjects.name和Sysobjects.xtype。

前面一个用来列出待考察对象的名字,而后一个用来定义对象的类型 sysobjects 在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。 

只有在 tempdb 内,每个临时对象才在该表中占一行。 

列名 数据类型 描述 
name sysname 对象名。 
Id int 对象标识号。 
xtype char(2) 对象类型。

1、对象名

对象名(name),可以是下列对象类型中的一种: 
C = CHECK 约束 
D = 默认值或 DEFAULT 约束 
F = FOREIGN KEY 约束 
L = 日志 
FN = 标量函数 
IF = 内嵌表函数 
P = 存储过程 
PK = PRIMARY KEY 约束(类型是 K) 
RF = 复制筛选存储过程 
S = 系统表 
TF = 表函数 
TR = 触发器 
U = 用户表 
UQ = UNIQUE 约束(类型是 K) 
V = 视图 
X = 扩展存储过程 
uid smallint 所有者对象的用户 ID。 
info smallint 保留。
仅限内部使用。 
status int 保留。
仅限内部使用。 
base_schema_ ver int 保留。
仅限内部使用。 
replinfo int 保留。
供复制使用。 
parent_obj int 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。 
crdate datetime 对象的创建日期。 
ftcatid smallint 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。 
schema_ver int 版本号,该版本号在每次表的架构更改时都增加。 
stats_schema_ ver int 保留。
仅限内部使用。 

2、对象类型

对象类型(xtype),Type是在6.0就有的,XType在7.0才出现: Type 对象类型。
可以是下列值之一: 
C = CHECK 约束 
D = 默认值或 DEFAULT 约束 
F = FOREIGN KEY 约束 
FN = 标量函数 
IF = 内嵌表函数 
K = PRIMARY KEY 或 UNIQUE 约束 
L = 日志 
P = 存储过程 
R = 规则 
RF = 复制筛选存储过程 
S = 系统表 
TF = 表函数 
TR = 触发器 
U = 用户表 
V = 视图 
X = 扩展存储过程 XType 对象类型。
可以是下列对象类型中的一种: 
C = CHECK 约束 
D = 默认值或 DEFAULT 约束 
F = FOREIGN KEY 约束 
L = 日志 
FN = 标量函数 
IF = 内嵌表函数 
P = 存储过程 
PK = PRIMARY KEY 约束(类型是 K) 
RF = 复制筛选存储过程 
S = 系统表 
TF = 表函数 
TR = 触发器 
U = 用户表 
UQ = UNIQUE 约束(类型是 K) 
V = 视图 
X = 扩展存储过程 

3、常见FAQ

1、问:object_id(N'中N'代表什么意思 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[text]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[text]  
答:N'' 代表 Unicode类型,National缩写。可以支持不同语种的对象名  


2、 问:select * from dbo.sysobjects where id = object_id(N'[dbo].[usertab]') and OBJECTPROPERTY(id, N'IsUserTable') = 1 这句中的object_id(N'[dbo].[usertab]')和OBJECTPROPERTY(id, N'IsUserTable') = 1 是什么意思?  
 答:object_id(N'[dbo].[usertab]'):是得出系统给表usertab分配的唯一ID OBJECTPROPERTY(id, N'IsUserTable') = 1 该对象的属性是表类型的 objectproperty(id,property)函数的使用, 


3、 问: USE master SELECT * FROM ...sysobjects “...sysobjects”三个句点的前缀是什么意思? 
 答:对数据库对象名的 Transact-SQL 引用可以是由四部分组成的名称,格式如下: [ server_name.[[database_name].[owner_name]. | database_name.[owner_name]. | owner_name.] ] object_name    当引用某个特定对象时,不必总是为 SQL Server 指定标识该对象的服务器、数据库和所有者。可以省略中间级节点,而使用句点表示这些位置。对象名的有效格式是: server.database.owner.object server.database..object server..owner.object server...object database.owner.object database..object owner.object  
例:1.找出所有用户表:

     select id,name,xtype,crdate from sysobjects where xtype='U' order by name;

      或者

     select id,name,xtype,crdate from sysobjects where objectproperty(id,N'IsUserTable')=1 order by name;

 
     2.找出所有存储过程 

      select id,name,xtype,crdate from sysobjects where xtype='P' order by name;

     或者 

      select id,name,xtype,crdate from sysobjects where objectproperty(id,N'IsProcedure')=1 order by name;


至此,关于sysobjects表讲解完毕,本文由职坐标整理并发布,欢迎大家继续关注!更多关于SQL Server数据库的内容请关注职坐标数据库SQL Server频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程