文档章节

SQL sever 中系统表sys.objects的作用与字段含义

熊二熊
 熊二熊
发布于 2016/04/14 11:24
字数 824
阅读 147
收藏 1
  • 0 定义

        官方对sys.objects的定义:在数据库中创建的每个用户定义的架构作用域内的对象在该表中均对应一行。

        这种翻译,真心的无力吐槽。我们用中文再翻译下这句中文:你在库中创建一张表,这里就会记录一条。

  • 1 查看

        执行脚本看下它的样子。

SELECT * FROM sys.objects

  • 2 表中字段解释
序号 列名 数据类型 说明
1 name sysname 对象名。
2 object_id int 对象标识号。  在数据库中是唯一的。  
3 principal_id int 如果不是架构所有者,则为单个所有者的 ID。  默认情况下,架构包含的对象由架构所有者拥有。  不过,通过使用 ALTER AUTHORIZATION 语句更改所有权可以指定备用所有者。  如果没有备用的单个所有者,则为 NULL。如果对象类型为下列类型之一,则为 NULL:
C = CHECK 约束
D = DEFAULT(约束或独立)
F = FOREIGN KEY 约束
PK = PRIMARY KEY 约束
R = 规则(旧式,独立)
TA = 程序集(CLR 集成)触发器
TR = SQL 触发器
UQ = UNIQUE 约束
4 schema_id int 包含该对象的架构的 ID。始终包含在sys或INFORMATION_SCHEMA架构中的架构作用域内的系统对象。
5 parent_object_id int 此对象所属对象的 ID。
0 = 不是子对象。
6 type char(2) 对象类型:
AF = 聚合函数 (CLR)
C = CHECK 约束
D = DEFAULT(约束或独立)
F = FOREIGN KEY 约束
FN = SQL 标量函数
FS = 程序集 (CLR) 标量函数
FT = 程序集 (CLR) 表值函数
IF = SQL 内联表值函数
IT = 内部表
P = SQL 存储过程
PC = 程序集 (CLR) 存储过程
PG = 计划指南
PK = PRIMARY KEY 约束
R = 规则(旧式,独立)
RF = 复制筛选过程
S = 系统基表
SN = 同义词
SO = 序列对象
适用范围:SQL Server 2012 到 SQL Server 2016。
SQ = 服务队列
TA = 程序集 (CLR) DML 触发器
TF = SQL 表值函数
TR = SQL DML 触发器
TT = 表类型
U = 表(用户定义类型)
UQ = UNIQUE 约束
V = 视图
X = 扩展存储过程
7 type_desc nvarchar(60) 对对象类型的说明:
AGGREGATE_FUNCTION
CHECK_CONSTRAINT
CLR_SCALAR_FUNCTION
CLR_STORED_PROCEDURE
CLR_TABLE_VALUED_FUNCTION
CLR_TRIGGER
DEFAULT_CONSTRAINT
EXTENDED_STORED_PROCEDURE
FOREIGN_KEY_CONSTRAINT
INTERNAL_TABLE
PLAN_GUIDE
PRIMARY_KEY_CONSTRAINT
REPLICATION_FILTER_PROCEDURE
RULE
SEQUENCE_OBJECT
适用范围:SQL Server 2012 到 SQL Server 2016。
SERVICE_QUEUE
SQL_INLINE_TABLE_VALUED_FUNCTION
SQL_SCALAR_FUNCTION
SQL_STORED_PROCEDURE
SQL_TABLE_VALUED_FUNCTION
SQL_TRIGGER
SYNONYM
SYSTEM_TABLE
TABLE_TYPE
UNIQUE_CONSTRAINT
USER_TABLE
View
8 create_date datetime 对象的创建日期。
9 modify_date datetime 上次使用 ALTER 语句修改对象的日期。  如果对象为表或视图,则创建或修改表或视图的聚集索引时,modify_date 也会随之更改。  
10 is_ms_shipped bit 对象由内部 SQL Server 组件创建。
11 is_published bit 对象为发布对象。
12 is_schema_published bit 仅发布对象的架构。

  • 3 有什么作用

        3.1 你可以用下面的命令列出感兴趣的所有对象

SELECT * FROM sysobjects WHERE xtype = <type of interest>

SELECT * FROM sysobjects WHERE xtype = 'V'  --例如:查看视图
        3.2 判断数据库中是否已经存在某个表,有的话就删除该表
----方法一:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and type='U'))
drop table [dbo].[表名]

----方法二:
if exists (Select * From sysObjects Where type='U' And Name='表名')) 
drop table [dbo].[表名]
        一般建议不要更新此表,但是查询还是OK的。

© 著作权归作者所有

熊二熊
粉丝 1
博文 10
码字总数 6288
作品 0
杭州
程序员
私信 提问
sql server 查询数据库所有的表名+字段

执行一条SQL语句: SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='subject'(表名) 1.利用sysobjects系统表 在这个表中,在数据库中创建的每个对象(例如约束、默认值、日志、...

yousss
2018/05/29
0
0
Database、Table的所有约束

列出Database或Table的所有约束 很多时候我们想使用像 INSERT、UPDATE、DELETE 这样的DML命令。有时候因为某个表被设置约束,导致我们操作该表出现错。拿到一个新的数据库,如果不知道哪些表...

长平狐
2013/06/17
154
0
无法删除表,提示被外键约束引用的解决

有时想删除某个表时,提示“无法删除对象 'Orders',因为该对象正由一个 FOREIGN KEY 约束引用”,原因很简单不要急躁,它被其它表的外键引用了,所以无法删除,在此只需先找到哪些表的外键引...

hdf007
2016/04/08
0
0
探索SQL Server元数据(二)

背景   上一篇中,我介绍了SQL Server 允许访问数据库的元数据,为什么有元数据,如何使用元数据。这一篇中我会介绍如何进一步找到各种有价值的信息。以触发器为例,因为它们往往一起很多问...

DB乐之者
2018/07/17
0
0
SQL Server查询某字段在哪些表中

select a.name 表名,b.name 列名 from sys.objects a,sys.columns b where objectname(b.objectid)=a.name and b.name='taskNo' and type='u'......

dillonxiao
01/13
5
0

没有更多内容

加载失败,请刷新页面

加载更多

cleanLastUpdated.bat

@echo offrem create by AnXiaole rem 这里写你的仓库路径set REPOSITORY_PATH=C:\Users\AnXiaole\.m2\repositoryrem 正在搜索...for /f "delims=" %%i in ('dir /b /s "%REPO......

安小乐
29分钟前
6
0
操作放大器的用法是什么?

  有区别   1、单级放大的倍数比较有限,一般在100倍以下。放大倍数很大的话,负反馈就比较浅,对于放大倍数的稳定性不利。假如需要放大倍数更高,就不得不动用多级放大电路了。单级放大...

仙溪
32分钟前
3
0
c++ 上传文件 curl

bool uploadFile(std::string url, std::string file, std::string auth) { boost::filesystem::path p(file); CURL *curl; CURLcode res; struct curl_httppost *for......

青黑
38分钟前
3
0
冒泡与插入排序的代码实现

// 冒泡排序,a 表示数组,n 表示数组大小public void bubbleSort(int[] a, int n) { if (n <= 1) return; for (int i = 0; i < n; ++i) { // 提前退出冒泡循环的标志位 ...

无名氏的程序员
41分钟前
4
0
centos7.6 +mhvtl1.6安装

以前的mhvtl都是在centos6.x,5.x上安装的mhvtl以前版本为1.4,现在最新的1.6出来,可以安装在centos7.6上,下面是安装过程: 1.安装基础包 centos7.6只要能上外网,默认是配置了yun源的,这些...

突突突酱
42分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部