对于有些数据库我们没有权限或者因为其它原因无法查看其数据库的表结构,那么我们将要自己想办法去做了,如果能够应用程序访问的话,我们就可以使用如下所示的

sql脚本来获取数据库中的所有表结构了,代码如下:

use AdventureWorks2008
go

SELECT
(case when a.colorder=1 then d.name else '' end) 表名,
a.colorder 字段序号,
a.name 字段名,
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,
(case when (SELECT count(*)
FROM sysobjects
WHERE (name in (SELECT name
FROM sysindexes
WHERE (id = a.id) AND (indid in (SELECT indid
FROM sysindexkeys
WHERE (id = a.id) AND (colid in (SELECT colid
FROM syscolumns
WHERE (id = a.id) AND (name = a.name)
)
)
)
)
)
) AND (xtype = 'PK')
) > 0 then '√' else '' end) 主键,
b.name 类型,
a.length 占用字节数,
COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,
(case when a.isnullable=1 then '√'else '' end) 允许空,
isnull(e.text,'') 默认值,
isnull(g.[value],'') AS 字段说明

FROM  syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id  and  d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id AND a.colid = g.minor_id 
--where d.name in ('Contact','StockBmps','AddressType')---查询具体的表,注释掉后就是查询整个数据库了
order by a.id,a.colorder

如果数据库的版本不是SQL Server2008呢,比如是SQL Server2000 呢?

那么就需要将sys.extended_properties用sysproperties代替了。

因为sysproperties这个系统表,但在2008版本中却提示找不到,在联机文档中也找不到,后来发现这个系统表在2005版本中就已经被系统表sys.extended_properties所代替。

查看表T的扩展信息:

select object_id from sys.sysobjects where name = 'T';

select * from sys.extended_properties where major_id = object_id;

扩展信息中有一name项是MS_Description,这个选项可以查看备注信息

select * from sys.extended_properties where major_id = object_id where name = 'MS_Description';

转载于:https://www.cnblogs.com/kevinGao/archive/2012/07/25/2671014.html

SQL Server 2008中获取数据库所有表及其字段名称、类型、长度的SQL相关推荐

  1. SQL Server 2008 R2 新建数据库、表的简易流程

    目的:安装了SQL Server后新建一个新的数据库,添加一个表,为后续的功能开发做测试准备: 新建数据库简易流程 新建数据库 新建表 填充数据 新建数据库 连接对象资源管理器后,选中数据库,右键新建 ...

  2. 使用一下SQL Server 2008中的新日期函数

    在我们开始讨论SQL Server 2008中新的日期数据类型之前,先来回顾一下SQL Server 2005中以及更老版本中提供的两种日期数据类型,这些旧的数据类型是DATETIME和SMALLDA ...

  3. SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引 @邀月

    邀月 的数据库学习 http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html SQL Server 2008中SQL应用系列及BI ...

  4. SQL server 2008 中的五个系统数据库详解

    SQL Server 系统数据库有一个:分别为master , model , msdb ,tempdb 和 resource.他们的作用是什么呢?下面我们来一一分析: 1.master数据库 mas ...

  5. SQL Server 2008中新增的变更数据捕获(CDC)和更改跟踪

    SQL Server 2008中新增的变更数据捕获(CDC)和更改跟踪 SQL Server 2008中SQL应用系列--目录索引 本文主要介绍SQL Server中记录数据变更的四个方法:触发器.O ...

  6. SQL Server 2008中原生的分层数据类型:hierarchyid

    SQL Server 2008中SQL应用系列--目录索引 如果是在SQL 2000中,我们需要读取分层结构数据时,不得不借助递归.在SQL server 2005中,我们可以使用CTE,当然,好的数 ...

  7. SQL SERVER 2008中使用VARBINARY(MAX)进行二进制数据存取的实现方法

    在数据库应用项目开发中,经常会使用一些二进制的图像数据,存储和读取显示图像数据主要采用的是路径链接法和内存流法.路径链接法是将图像文件保存在固定的路径下,数据库中只存储图像文件的路径和名称,此方法数据 ...

  8. SQL Server 2008中的代码安全(三):通过PassPhrase加密

    SQL Server 2008中SQL应用系列--目录索引 导读:本文主要涉及EncryptByPassPhrase和DecryptByPassPhrase函数进行通行短语(PassPhrase)加密 ...

  9. sql server基础语法 创建数据库 创建表

    sql server基础语法 创建数据库 创建表 1.创建数据库 2.表的创建 3.在现有表中添加标识列 4.创建外键 5.添加外键 6.约束 7.创建局部临时表 8.创建全局临时表 9.创建具有ch ...

最新文章

  1. 计算机操作系统“进程”与“线程”的通俗解析
  2. 多数据源:spring boot+mybatisplus配置
  3. ubuntu更新时区和时间
  4. 数组遍历VS对象遍历
  5. linux中的IO函数
  6. python_9(模块补充)
  7. 技术就是力量?!有人拿走百万现金,真相却是......
  8. 基于Senparc的二次封装
  9. 语法制导定义 SDD
  10. servlet3异步 例子_异步Servlet示例
  11. 网站性能常用指标与优化方法
  12. Elasticsearch 7 Failed to parse value [analyzed] as only [true] or [false] are allowed.
  13. ASPack压缩可执行文件
  14. 情人节 放出了 我囤积的 部分碎片 论点
  15. 28 | Pika:如何基于SSD实现大容量Redis?
  16. win7命名计算机无法下一步,win7还原系统不能点下一步怎么办(无响应)
  17. selenium+python实现自动登陆QQ邮箱,并发送邮件
  18. OBS录屏闪动问题解决方案
  19. 分析时间序列数据的六个图表
  20. git 重置用户名和密码

热门文章

  1. 算法-------二分法查找
  2. make编译过程-Android10.0编译系统(三)
  3. 创建型模式--(再论)单例模式
  4. ThreadLocal内存泄漏问题
  5. Flutter开发之搭建Flutter开发环境(三)
  6. (0084)iOS开发之测试iOS远程消息推送
  7. sorry for yesterday
  8. (转)spring源码解析,spring工作原理
  9. Python—sqlalchemy
  10. 入门4:PHP 语法基础1