灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:1918回复:0

[SQL Server]SQL Server 2008查询表结构信息,主要目的是方便查询字段说明

楼主#
更多 发布于:2013-05-25 15:05
SQL Server 2008查询表结构信息,主要目的是方便查询字段说明
 
在网上查了几篇这方面的文章,发现Sql语句是针对SQL Server 2008以前的版本,不能用,而且代码比较乱,只好自己写了,写好了不能独享,希望能对看官有帮助
 
打开SQL Server Management Studio,选择好需要查看数据库表说明的库,打开查询分析器窗口,copy下面的代码,替换TableName为你想要查看的表名,执行即可。
 
---------------------------------------------------------------------
 
DECLARE @tableName VARCHAR(100)--表名
SET @tableName = 'MasterBill'
 
SELECT  ISNULL((SELECT  ep.value
                FROM    sys.sysobjects obj
                        INNER JOIN sys.extended_properties ep ON obj.id = ep.major_id
                WHERE   obj.name = @tableName
                        AND ep.minor_id = 0
               ), @tableName) AS tableDesc,
        col.name AS colName,
        CASE WHEN EXISTS ( SELECT   1
                           FROM     sysobjects
                           WHERE    xtype = 'PK'
                                    AND name IN (SELECT  name
                                                FROM    sysindexes
                                                WHERE   id = col.id
                                                        AND indid IN (SELECT
                                                              indid
                                                              FROM
                                                              sysindexkeys
                                                              WHERE
                                                              id = col.id
                                                              AND colid = col.colid
                                                              )
                                               ) ) THEN 'Y'
             ELSE ''
        END AS isPK,
        t.name AS dataType,
        col.length AS [dataLength],
        CASE col.isnullable
          WHEN 1 THEN 'Y'
          ELSE 'N'
        END AS isNullable,
        ISNULL(colDefault.text, '') AS defaultVal,
        ISNULL(ep.value, '') AS ColDesc
FROM    sys.syscolumns col
        INNER JOIN sys.sysobjects obj ON obj.id = col.id
        INNER JOIN systypes t ON col.xtype = t.xusertype
        LEFT JOIN syscomments colDefault ON col.cdefault = colDefault.id
        LEFT JOIN sys.extended_properties ep ON ep.major_id = obj.id
                                                AND col.colorder = ep.minor_id
                                                AND ep.minor_id > 0
WHERE   obj.name = @tableName
ORDER BY col.colorder

喜欢0 评分0
游客

返回顶部