SELECT

sysobjects.name AS 表名称 ,
--sysproperties.[value] AS 表说明 ,
syscolumns.name AS 字段名称 ,
--properties.[value] AS 字段说明 ,
systypes.name AS 字段类型 ,
syscolumns.length AS 字段长度 ,
ISNULL(COLUMNPROPERTY(syscolumns.id, syscolumns.name,'Scale'), 0) AS 小数位数 ,

CASE WHEN syscolumns.isnullable=0
 THEN ''
ELSE ' √ '
END AS 是否为空 ,
CASE WHEN syscomments.text IS NULL
 THEN '' ELSE syscomments.text
END AS 缺省值 ,
CASE WHEN COLUMNPROPERTY(syscolumns.id, syscolumns.name, 'IsIdentity')= 1
 THEN ' √ ' ELSE ''
END AS 递增字段 ,
CASE WHEN sysindexes.name IS NULL
 THEN ''
ELSE sysindexes.name
END AS 索引名称 ,
CASE WHEN sysindexkeys.keyno IS NULL
 THEN ''
ELSE CONVERT(VARCHAR(10),sysindexkeys.keyno )
END AS 索引位置 ,
CASE WHEN sysindexes.indid=1
 THEN ' 聚集索引 '
WHEN sysindexes.indid>1 AND sysindexes.indid<>255
 THEN ' 非聚集索引 '
WHEN sysindexes.indid IS NULL
 THEN ''
ELSE
 ' 其他 '
END AS 索引类型 ,
CASE WHEN EXISTS
(SELECT 1
  FROM sysobjects
 WHERE xtype = 'PK' AND name IN
 (SELECT name
    FROM sysindexes
   WHERE indid IN
   (SELECT indid
      FROM sysindexkeys
     WHERE id = syscolumns.id AND colid = syscolumns.colid)))
 THEN ' √ ' ELSE ''
END AS 主键 ,
CASE WHEN sysforeignkeys.constid IS NULL
 THEN ''
ELSE ' √ '
END AS 外健
FROM syscolumns                            -- 数据表字段
INNER JOIN sysobjects                        -- 数据对象
  ON sysobjects.id = syscolumns.id
INNER JOIN systypes                         -- 数据类型
  ON syscolumns.xtype = systypes.xtype
LEFT OUTER JOIN sysproperties properties       -- 字段属性信息
  ON syscolumns.id = properties.id
 AND syscolumns.colid = properties.smallid
LEFT OUTER JOIN sysproperties                -- 表属性信息
  ON sysobjects.id = sysproperties.id
 AND sysproperties.smallid = 0
LEFT OUTER JOIN syscomments                -- 注释信息
  ON syscolumns.cdefault = syscomments.id
LEFT OUTER JOIN sysindexkeys                -- 索引中的键或列的信息
  ON sysindexkeys.id = syscolumns.id
 AND sysindexkeys.colid = syscolumns.colid
LEFT OUTER JOIN sysindexes                  -- 数据库 索引表
  ON sysindexes.id = sysindexkeys.id AND sysindexes.indid = sysindexkeys.indid
LEFT OUTER JOIN sysforeignkeys  ON sysforeignkeys.fkeyid = syscolumns.id
 AND sysforeignkeys.fkey = syscolumns.colid
WHERE (sysobjects.xtype = 'U')
order by sysobjects.id,syscolumns.colid

SQL Server 数据字典生成脚本的更多相关文章

  1. 浅谈如何在SQL Server中生成脚本

    在生成脚本过程中,有很多参数可以选择,合理的配置这些参数,可以让我们很方便的按照我们的期望生成脚本. 生成脚本的一些选项,如下图: 我这里是SQL 2005 的选项, SQL 2008 的选项跟这个稍 ...

  2. sql server编写通用脚本自动统计各表数据量心得

    工作过程中,如果一个数据库的表比较多,手工编写统计脚本就会比较繁琐,于是摸索出自动生成各表统计数据量脚本的通用方法,直接上代码: /* 脚本来源:https://www.cnblogs.com/zha ...

  3. SQL Server中生成测试数据

    原文:SQL Server中生成测试数据 简介      在实际的开发过程中.很多情况下我们都需要在数据库中插入大量测试数据来对程序的功能进行测试.而生成的测试数据往往需要符合特定规则.虽然可以自己写 ...

  4. 关于SQL Server 无法生成 FRunCM 线程(不完全)

    在五一的前一天,准备启动数据库完成我剩下的项目代码时,数据库配置管理器出现了一个让人蛋疼的问题sqlserv配置管理器出现请求失败或服务器未及时响应关于这个问题的处理方法,经过我两个小时的百度,网上对 ...

  5. Powerdesigner逆向工程从sql server数据库生成pdm【转】

    Powerdesigner逆向工程从sql server数据库生成pdm 第一步:打开"控制面板"中的"管理工具" 第二步:点击"管理工具" ...

  6. 如何在SQL Server中生成和使用CRUD存储过程

    在本文中,请参阅如何在SQL Server中生成和使用CRUD存储过程. 大多数数据库系统基于缩写CRUD调用的最简单的4种数据操作操作进行操作. 此首字母缩写词代表CREATE,READ,UPDAT ...

  7. EFCore 通过实体Model生成创建SQL Server数据库表脚本

    在我们的项目中经常采用Model First这种方式先来设计数据库Model,然后通过Migration来生成数据库表结构,有些时候我们需要动态通过实体Model来创建数据库的表结构,特别是在创建像临 ...

  8. PowerDesigner 生成SQL Server 2005 注释脚本

    --生成数据表的注释EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=[%R%?[N]]%.q:COMMENT% , @l ...

  9. SQL Server 动态生成数据库所有表Insert语句

    一. 背景 SQL Server,如果我们需要把数据库A的所有表数据到数据库B中,通常我们会怎么做呢?我会使用SSMS的导入导出功能,进行表数据的导入导出,无可厚非,这样的导入非常简单和方便: 但是, ...

随机推荐

  1. no bundle URL present in react-native?

    Assuming that you are using nvm and multiple versions of node installed, here is the solution: Say t ...

  2. Python的import module与form module import的区别

    import moduleName 如果要使用moduleName模块中的方法时,是moduleName.method(点方法), 比如moduleName中有个方法是set,则使用的是moduleN ...

  3. python爬虫29 | 使用scrapy爬取糗事百科的例子,告诉你它有多厉害!

    是时候给你说说 爬虫框架了 使用框架来爬取数据 会节省我们更多时间 很快就能抓取到我们想要抓取的内容 框架集合了许多操作 比如请求,数据解析,存储等等 都可以由框架完成 有些小伙伴就要问了 你他妈的 ...

  4. 【16】AngularJS API

    AngularJS API API 意为 Application Programming Interface(应用程序编程接口). AngularJS 全局 API AngularJS 全局 API ...

  5. 如何相互转换逗号分隔的字符串和List --https://blog.csdn.net/yywusuoweile/article/details/50315377

    如何相互转换逗号分隔的字符串和List ---https://blog.csdn.net/yywusuoweile/article/details/50315377 方法 2: 利用Guava的Joi ...

  6. 文化之旅 2012年NOIP全国联赛普及组

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超 ...

  7. jQuery动态添加表格1

    用jquery的append方法在指定行的后面新增一行tr,会把新增的行的html追加到指定行的html里面 content +="<tr><td>123</t ...

  8. solr合并集合

    当需要合并两个不同项目或者是多个分开配置的服务器时,你既可以使用lucene-misc里面的IndexMergeTool工具,也可以使用CoreAdminHandler. 要合并索引,必须满足如下要求 ...

  9. 设置Linux使用SMTP服务发送邮件

    很多时候我们需要知道服务器的运行状态,比如发生了异常的报警.数据库备份的状态等,假如服务器自动跟你汇报那就好了,我们可以通过设置当触发某些条件时让服务器发送邮件给你,这样你就可以了解你的服务器的状态怎 ...

  10. 玲珑杯 ACM Round #10

    A 题意:给长度为n的序列染黑白色,要求连续的黑的格子数量<=a,连续的白的格子数量<=b,问方案总数,有多个询问 分析:递推 注意数据范围,是可以O(n)做的,所以可以直接递推 B 题意 ...