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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bitmap设置图片尺寸缩小,避免内存溢
- 下一篇: 【Apache Mina2.0开发之二】