欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > windows >内容正文

windows

SqlServer用户数据库的系统视图sysobjects、syscolumns、systypes

发布时间:2024/9/20 windows 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 SqlServer用户数据库的系统视图sysobjects、syscolumns、systypes 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

  想获得SqlServer用户数据库的Schema,本来想直接用ADO的SqlConnection对象的GetSchema()方法,但是架构中居然没有PrimaryKeys,只好借助于T-SQL语句了!在网上找到了一下的语句,可以正确执行。

查询用户表的信息 1 SELECT 2 3 表名=CASE WHEN a.colorder=1 THEN d.name ELSE '' END, 4 5 表说明=CASE WHEN a.colorder=1 THEN isnull(f.VALUE,'') ELSE '' END, 6 7 字段序号=a.colorder, 8 9 字段名=a.name, 10 11 标识=CASE WHEN COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 THEN ''ELSE '' END, 12 13 主键=CASE WHEN EXISTS(SELECT 1 FROM sysobjects WHERE xtype='PK' AND name IN ( 14 15 SELECT name FROM sysindexes WHERE indid IN( 16 17 SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid 18 19 ))) THEN '' ELSE '' END, 20 21 类型=b.name, 22 23 占用字节数=a.LENGTH, 24 25 长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'), 26 27 小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0), 28 29 允许空=CASE WHEN a.isnullable=1 THEN ''ELSE '' END, 30 31 默认值=isnull(e.text,''), 32 33 字段说明=isnull(g.[VALUE],'') 34 35 FROM syscolumns a 36 37 LEFT JOIN systypes b ON a.xtype=b.xusertype 38 39 INNER JOIN sysobjects d ON a.id=d.id AND d.xtype='U' AND d.name<>'dtproperties' 40 41 LEFT JOIN syscomments e ON a.cdefault=e.id 42 43 LEFT JOIN sys.extended_properties g ON a.id=g.major_id AND a.colid=g.major_id 44 45 LEFT JOIN sys.extended_properties f ON d.id=f.major_id AND f.major_id =0 46 47 --where d.name='要查询的表' --如果只查询指定表,加上此条件 48 49 ORDER BY a.id,a.colorder

  执行结果上图所示。对应的sysobjects、syscolumns、systypes系统表没有找到,但是系统视图中可以看到,sys.sysobjects、sys.syscolumns、sys.systypes几个系统视图。

  获取数据表的方法:

select * from sysobjects where xType = 'U'

  sysobjects:SQL-SERVER的每个数据库内都有此系统表,它存放该数据库内创建的所有对象,如约束、默认值、日志、规则、存储过程等,每个对象在表中占一行。以下是此系统表的字段名称和相关说明。Name,id,xtype,uid,status:分别是对象名,对象ID,对象类型,所有者对象的用户ID,对象状态。 
  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 = 扩展存储过程 
  当xtype='U' and status>0代表是用户建立的表,对象名就是表名,对象ID就是表的ID值。 

转载于:https://www.cnblogs.com/yhlx125/archive/2012/08/21/2648538.html

总结

以上是生活随笔为你收集整理的SqlServer用户数据库的系统视图sysobjects、syscolumns、systypes的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。