原文:获取SQLServer的最完整数据字典的SQL语句

原创于2008年06月18日,2009年10月18日迁移至此。

获取SQLServer
的最完整数据字典的SQL
语句

 

其实网上已经流传了很多关于获取
SQLServer
的数据字典的版本,不过我相信这个应该是最全的了,本语句包括了表、字段、字段类型、字段长度、是否为空、是否递增字段、索引名称、索引的定位、索引类型、主键、外键等;通过合理的裁剪可以很方便的生成相应的数据字典。

 

SELECT

sysobjects.name AS
表名称
,ITPUB个人空间qpd6Bv c~~/0s%?7k(@


--sysproperties.[value] AS
表说明
,
Zqm6iAu:{6517
syscolumns.name AS
字段名称
,ITPUB个人空间'y:q,dLc,d2b


--properties.[value] AS
字段说明
,
ShKAM_p6517
systypes.name AS
字段类型
,
:x-q
z$[X'n6517
syscolumns.length AS
字段长度
,ITPUB个人空间3g.O
h/o}t"t:[


ISNULL(COLUMNPROPERTY(syscolumns.id,
syscolumns.name,'Scale'), 0) AS
小数位数
,

CASE WHEN syscolumns.isnullable=0
bhvB-?6517
 THEN ''ITPUB个人空间ut"t.a;w;uO*g


ELSE '

'ITPUB个人空间)u(DZ)}�RM%M


END AS
是否为空
,
0JH2l#K
g6_3G6517
CASE WHEN syscomments.text IS NULLITPUB个人空间
S1s1~"?e/
G4}


 THEN '' ELSE syscomments.text
*@,f9}4Hi
n[aNN6517
END AS
缺省值
,ITPUB个人空间
x;e){H^Y


CASE WHEN COLUMNPROPERTY(syscolumns.id,
syscolumns.name, 'IsIdentity')= 1
#U/v4i5]5Q"b6517
 THEN '

' ELSE ''
Ds(~E7] D5}6517
END AS
递增字段
,
2xB
kOPva(m'I6517
CASE WHEN sysindexes.name IS NULL
5HH2Y!l6^U4f,o6517
 THEN ''
;Pls)[|(PegV'~/�p6517
ELSE sysindexes.nameITPUB个人空间7d#]/6~?,UXh


END AS
索引名称
,ITPUB个人空间�hBP+l4uN#j


CASE WHEN sysindexkeys.keyno IS NULL
T|q2dNDeY*U+^*|0U6517
 THEN ''ITPUB个人空间]X5FdH0V)K


ELSE
CONVERT(VARCHAR(10),sysindexkeys.keyno )
tk&]u
[P m6517
END AS
索引位置
,
~'l4qDj5~Z6517
CASE WHEN sysindexes.indid=1ITPUB个人空间s!v{]6u"Rw*S


 THEN '
聚集索引
'
.kaIn1bCR�j6517
WHEN sysindexes.indid>1 AND sysindexes.indid<>255
KYU
S3_*Lu�X6517
 THEN '
非聚集索引
'ITPUB个人空间,[L�zMd*O1C


WHEN sysindexes.indid IS NULL
R$s
b&?)O)Pt!zq%{5V6517
 THEN ''ITPUB个人空间@
`%S2|.@n'Yg


ELSEITPUB个人空间q|"GZV]}o


 '
其他
'
K%}7A+U{Kwb6517
END AS
索引类型
,ITPUB个人空间6z9k/ne8fM$i


CASE WHEN EXISTSITPUB个人空间-PS^;qs7^


(SELECT 1ITPUB个人空间Q
d!HC4oYW*q


  FROM sysobjects
;P dp,e2SyBRO!H6517
 WHERE xtype = 'PK' AND name INITPUB个人空间(p"~3ERM^~


 (SELECT name
s(k#A{ ]z6517
    FROM sysindexes
bl#o"ye)f"N/r6517
   WHERE indid INITPUB个人空间2xsh9^!T
yRUE:[


   (SELECT indidITPUB个人空间N;pQP-X+]2_5i


      FROM sysindexkeys
!W]OR9z6517
     WHERE id = syscolumns.id AND colid = syscolumns.colid)))ITPUB个人空间,/|#KPH:e#C,~


 THEN '

' ELSE ''
5X#I4nOfL
]6517
END AS
主键
,ITPUB个人空间 UBE"d&p2J


CASE WHEN sysforeignkeys.constid IS NULLITPUB个人空间9R6m#S!]@ }y�b


 THEN ''
:cM$P}
SS
X~`G0]
kH6517
ELSE '

'
C
X:Gyb1S(l6517
END AS
外健

FROM syscolumns                            --
数据表字段

INNER JOIN sysobjects                        --
数据对象

  ON sysobjects.id = syscolumns.idITPUB个人空间?9g-| K&}x [3{


INNER JOIN systypes                         --
数据类型

  ON syscolumns.xtype = systypes.xtypeITPUB个人空间;lT DDe[


LEFT OUTER JOIN sysproperties
properties       --
字段属性信息

  ON syscolumns.id = properties.idITPUB个人空间-B%b,Ft0`Q([+M


 AND syscolumns.colid = properties.smallid
^!MM+Vy$P6517
LEFT OUTER JOIN sysproperties                --
表属性信息

  ON sysobjects.id = sysproperties.id
Ajf/y4{i'Q
H4@id6517
 AND sysproperties.smallid = 0
TN4T$sc4E6517
LEFT OUTER JOIN syscomments                --
注释信息

  ON syscolumns.cdefault = syscomments.id
5T:i1YIm:y:@j�V~6517
LEFT OUTER JOIN sysindexkeys                --
索引中的键或列的信息

  ON sysindexkeys.id = syscolumns.idITPUB个人空间?-v;}$y;P


 AND sysindexkeys.colid = syscolumns.colidITPUB个人空间k6Ae#Y;t|Z


LEFT OUTER JOIN sysindexes                  --
数据库
索引表

  ON sysindexes.id = sysindexkeys.id
Ljnw"K[ sn6517
 AND sysindexes.indid = sysindexkeys.indidITPUB个人空间+WD&gCA^


LEFT OUTER JOIN sysforeignkeysITPUB个人空间3B+a*e(`5}*}UV


  ON sysforeignkeys.fkeyid = syscolumns.id
E HKA @(KB&L(x_6517
 AND sysforeignkeys.fkey = syscolumns.colid
/!k/e%r8r6517
WHERE (sysobjects.xtype = 'U')ITPUB个人空间8JxTxl


order by sysobjects.id,syscolumns.colid

Z3x[ g!D,a"Ee~P6517
ITPUB个人空间chS`,O(?&a
8/n8U/@x.W;h6517
bd-jg WS ^2f�mD6517
ITPUB个人空间ozix3D%_L-s
ITPUB个人空间iJ1y0OU^[
ITPUB个人空间V}?�f6Ic�O
ITPUB个人空间Z5Q&TZ+DT'K
ITPUB个人空间z$]{QF/g

 

获取SQLServer的最完整数据字典的SQL语句的更多相关文章

  1. 浅析SqlServer简单参数化模式下对sql语句自动参数化处理以及执行计划重用

    我们知道,SqlServer执行sql语句的时候,有一步是对sql进行编译以生成执行计划, 在生成执行计划之前会去缓存中查找执行计划 如果执行计划缓存中有对应的执行计划缓存,那么SqlServer就会 ...

  2. 查看SQLServer最耗资源时间的SQL语句

    执行最慢的SQL语句 SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N'总 ...

  3. SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划

    我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...

  4. Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理

    最近把平时在项目中常用到的数据库分页sql总结了下.大家可以贴出分页更高效的sql语句.sqlserver分页 第一种分页方法 需用到的参数: pageSize 每页显示多少条数据 pageNumbe ...

  5. Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句

    最近把平时在项目中常用到的数据库分页sql总结了下.大家可以贴出分页更高效的sql语句.sqlserver分页  第一种分页方法 需用到的参数:  pageSize 每页显示多少条数据  pageNu ...

  6. (转)查看SQLServer最耗资源时间的SQL语句

    原文地址:https://www.cnblogs.com/My-Dream/p/6270308.html 1.找出执行时间最长的10条SQL(适用于SQL SERVER 2005及其以上版本) SEL ...

  7. SQLServer最耗资源时间的SQL语句

    作者kolachen http://blog.sina.com.cn/s/blog_63f3e0060102vcm0.html 先拷过来了,等有空再研究一下 执行最慢的SQL语句 SELECT (to ...

  8. 第二节:SQLServer导出-重置sa密码-常用sql语句

    1.SQLServer导出: 点击要导出数据库----->右键(任务)----->生成脚本----->下一步----->下一步(高级)要编写脚本的数据类型---选择架构和数据 ...

  9. 如何将sqlserver表中的数据导出sql语句或生成insert into语句 [转]

    输入表名,生成插入语句 drop proc proc_insert //如果存在就删除 go create proc proc_insert (@tablename varchar(256)) as ...

随机推荐

  1. pytorch:EDSR 生成训练数据的方法

    Pytorch:EDSR 生成训练数据的方法 引言 Winter is coming 正文 pytorch提供的DataLoader 是用来包装你的数据的工具. 所以你要将自己的 (numpy arr ...

  2. Linq学习(一)

    与LINQ有关的语言特性 1.隐式类型 var 2.匿名类型 如:var obj = new {Guid.Empty, myTitle = "匿名类型", myOtherParam ...

  3. JZOJ 5279 香港记者

    一句话题意:一个带点权边权的无向图,输出从1号点到n号点的最短路中字典序最小的一条路径 样例输入: 8 9 1 2 3 4 5 6 7 8 1 2 2 2 3 3 3 8 3 1 4 3 4 5 2 ...

  4. 原 HBase 常用Shell命令

    HBase 常用Shell命令 1.进入hbase shell console $HBASE_HOME/bin/hbase shell 如果有kerberos认证,需要事先使用相应的keytab进行一 ...

  5. WebStrom Sass 编译配置 windows

    第一步: 先安装Ruby下载 一路next 安装完成后打开开始菜单 打开后输入 gem install sass sass -v 出现版本号说明成功 第二部配置webstorm 在webstorm中s ...

  6. POJ3680:Intervals(离散化+最大流最小费用)

    Intervals Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9320   Accepted: 4014 题目链接:ht ...

  7. RDM原始设备映射

    在一个存储区域网络(SAN)上,有两种方法为虚拟机配置存储.一种方法是使用VMFS,这是VMware Infrastructure(VI)提供的专有高性能集群文件系统.对大多数企业应用来说,在VMFS ...

  8. Windows下安装Redis并注册为服务

    1.安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择,这里我们下 ...

  9. Windows ToolTips简要介绍(转)

    原文转自 https://blog.csdn.net/sesiria/article/details/77450151 Windows 标准控件ToolTips简要介绍 参考文档 MSDN https ...

  10. RUNAS UAC

    cookielib pip install wmi _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE', 0, _winreg.KEY_ALL ...