码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server体系表sysobjects简介与应用

时间:2019-10-10 00:32:33      浏览:36      评论:0      收藏:0      [点我收藏+]

标签:foreign   成功   and   架构   stat   key   sql   int   格局   

关于SQL Server数据库的一切信息都保存在它的体系表格里。我困惑你能否花过比较多的时间来检查体系表格,由于你总是忙于用户表格。然则,你能够须要有时做一点不合平常的事,例如数据库一切的触发器。你可以一个一个地检查表格,然则假设你有500个表格的话,这能够会消费相昔时夜的人工。

  这就让sysobjects表格有了用武之地。固然我不建议你更新这个表格,然则你固然有权对其停止审查。

  sysobjects 表 
  在数据库内创建的每个对象(束缚、默许值、日记、规矩、存储过程等)在表中占一行。只要在 tempdb 内,每个临时对象才在该表中占一行。

sysobjects 表构造:

列名 数据类型 描述
name sysname 对象名,经常使用列
id int 对象标识号
xtype char(2) 对象类型。经常使用列。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 = 扩大存储过程
uid smallint 一切者用户对象编号
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  保存。仅限外部应用。
type char(2)   对象类型。可所以以下值之一: 
 C = CHECK 束缚   D = 默许值或 DEFAULT 束缚 F = FOREIGN KEY 束缚 
 FN = 标量函数 IF = 内嵌表函数  K = PRIMARY KEY 或 UNIQUE 束缚 
 L = 日记 P = 存储过程 R = 规矩  RF = 复制挑选存储过程 
S = 体系表  TF = 表函数 TR = 触发器 U = 用户表 V = 视图 X = 扩大存储过程
 userstat smallint   保存。
 sysstat smallint   外部状况信息
 indexdel  smallint  保存
 refdate  datetime  留用
 version int   保存
deltrig  int   保存
 instrig int   保存
 updtrig int   保存
 seltrig int   保存
 category  int  用于发布、束缚和标识
 cache smallint   保存

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


你可以用下面的敕令列出感兴趣的一切对象:

SELECT * FROM sysobjects WHERE xtype = <type of interest>
--例如:检查视图
SELECT * FROM sysobjects WHERE xtype = V

断定数据库中能否曾经存在某个表,有的话就删除该表

--办法一:
if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[表名]) and OBJECTPROPERTY(id, NIsUserTable) = 1)
drop table [dbo].[表名]

--办法二:
if exists (select * from sysobjects where id = object_id(N表名) and OBJECTPROPERTY(id, NIsUserTable) = 1)
drop table [dbo].[表名]

--办法三:
if(Exists(Select * From SysObjects Where xtype=U And Name=表名)) 
drop table [dbo].[表名]

今后持续弥补。

某些同伙的一些疑问:

1、问:object_id(N‘表名‘)中N‘代表甚么意思?

答:N‘‘ 代表 Unicode类型.可以支撑不合语种的对象名

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

未完待续(XX还没有成功,前面要靠大年夜家了)……

SQL Server体系表sysobjects简介与应用

标签:foreign   成功   and   架构   stat   key   sql   int   格局   

原文地址:https://www.cnblogs.com/superfeeling/p/11645045.html

(0)
(0)
   
告发
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权一切 京ICP备13008772号-2
迷上了代码!