`

从Sql server 2008获取表字段属性信息,注释信息

 
阅读更多
sqlserver 2008获得表的注释和字段的注释
select a.name, a.object_id as table_id,b.minor_id, b.value  
	from sys.tables a left join sys.extended_properties b on a.object_id=b.major_id 
	where a.name='TABLE3' and b.minor_id=0 and b.name = 'MS_Description'
	and a.schema_id=(
		select schema_id from sys.schemas where name='dbo'
	)

select a.name as table_name, b.name as column_name, c.value as remarks 
	from sys.tables a left join sys.columns b on a.object_id=b.object_id
	left join sys.extended_properties c on a.object_id=c.major_id
	where a.name='TABLE3' and c.minor_id<>0 and b.column_id=c.minor_id
	and a.schema_id=(
		select schema_id from sys.schemas where name='dbo'
	)


http://my.oschina.net/Kenyon/blog/55433
今天无意中在网上发现Sqlserver有一个扩展属性系统表sysproperties,因为只接触过MSSQL2005及以后的版本,在生产库2008版本及联机文档上搜了下都找不到这个系统表,后来发现这个系统表在2005版本后就被另一个系统表sys.extended_properites所代替。

查看表的扩展属性:
select object_id from sys.sysobjects where name = table_name;
select * from sys.extended_properties where major_id = object_id;

扩展属性中有一name值是MS_Description,这个值是查看备注信息的。
select * from sys.extended_properties where major_id = object_id and name = 'MS_Description';

至于属性的意思,参考:http://msdn.microsoft.com/zh-cn/library/ms177541(v=sql.105).aspx
class,tinyint, 标识其上存在属性的项类。可以是下列值之一:
0 = 数据库
1 = 对象或列
2 = 参数
3 = 架构
4 = 数据库主体
5 = 程序集
6 = 类型
7 = 索引
10 = XML 架构集合
15 = 消息类型
16 = 服务约定
17 = 服务
18 = 远程服务绑定
19 = 路由
20 = 数据空间(文件组或分区方案)
21 = 分区函数
22 = 数据库文件
27 = 计划指南

class_desc,nvarchar(60),其上存在扩展属性的类的说明。可以是下列值之一:
DATABASE
OBJECT_OR_COLUMN
PARAMETER
SCHEMA
DATABASE_PRINCIPAL
ASSEMBLY
TYPE
INDEX
XML_SCHEMA_COLLECTION
MESSAGE_TYPE
SERVICE_CONTRACT
SERVICE
REMOTE_SERVICE_BINDING
ROUTE
DATASPACE
PARTITION_FUNCTION
DATABASE_FILE
PLAN_GUIDE

major_id,int,其上存在扩展属性的项 ID,根据项类进行解释。对于大多数项,该 ID 适用于类所表示的项。下列是非标准主 ID 的解释:
如果 class 为 0,则 major_id 始终为 0。
如果 class 为 1、2 或 7,则 major_id 为 object_id。

minor_id,int,其上存在扩展属性的项辅助 ID,根据项类进行解释。对于大多数项,ID 为 0;否则,ID 为下列值之一:
如果 class = 1,则 minor_id 在项为列的情况下等于 column_id,在项为对象的情况下等于 0。
如果 class = 2,则 minor_id 为 parameter_id。
如果 class = 7,则 minor _id 为 index_id。

name,sysname,属性名,其 class、major_id 和 minor_id 是唯一的。

value,sql_variant,扩展属性的值。

http://hi.baidu.com/wyg_bd/item/9c153f3d149300697d034b4c
在SqlServer中如何得到列的描述信息_sys.SysColumns和sys.extended_properties关系,sql-promptx下载
Sql开发工具下载地址  sql-promptx
SELECT a.*,b.value AS'描述内容' FROMsys.syscolumns a 
LEFTJOINsys.extended_propertiesb  ON a.id=b.major_id
WHERE a.id=(SELECTOBJECT_ID('表名称'))


方法二:
select 
    TableName = tbl.table_schema + '.' + tbl.table_name, 
    TableDescription = prop.value,
    ColumnName = col.column_name, 
    ColumnDataType = col.data_type,
    DescriptionValue=prop.value
FROM information_schema.tables tbl
INNER JOIN information_schema.columns col 
    ON col.table_name = tbl.table_name
LEFT JOIN sys.extended_properties prop 
    ON prop.major_id = object_id(tbl.table_schema + '.' + tbl.table_name) 
    AND prop.minor_id = 0
    AND prop.name = 'MS_Description' 
WHERE tbl.TABLE_NAME = '表名称'


二、 取得column_id,system_type_id,user_type_id,default_object_id
SELECT c.column_id,c.system_type_id,user_type_id, default_object_id FROM sys.columns AS c INNER JOIN sys.tables AS t ON c.object_id = t.object_id WHERE t.name = 'TabT' AND c.name = 'conlumName of TabT'


三,取得key_constraint_id
SELECT k.object_id FROM sys.key_constraintsAS k INNER JOIN sys.indexes AS i ON k.parent_object_id = i.object_id AND k.unique_index_id = i.index_id INNER JOIN sys.index_columnsAS x ON i.object_id = x.object_id AND i.index_id = x.index_id INNER JOIN sys.columnsAS c ON x.object_id = c.object_id AND x.column_id = c.column_id INNER JOIN sys.tables AS t ON c.object_id = t.object_id AND k.schema_id = t.schema_id WHERE i.is_disabled = 0 AND t.name = 'TabT' AND c.name = 'conlumName of TabT'


四、foreign_key_constraint_id
SELECT f.object_id FROM sys.foreign_keys AS f INNER JOIN sys.foreign_key_columns AS l ON f.object_id = l.constraint_object_id INNER JOIN sys.columns AS c ON f.parent_object_id = c.object_id AND l.parent_object_id = c.object_id AND l.parent_column_id = c.column_id INNER JOIN sys.tables AS t ON c.object_id = t.object_id AND f.schema_id = t.schema_id WHERE f.is_disabled = 0 AND t.name = 'TabT' AND c.name = 'conlumName of TabT'



http://space.itpub.net/16436858/viewspace-624807
select   b.[value] from sys.columns a left join sys.extended_properties b on a.object_id=b.major_id
        and a.column_id=b.minor_id inner join sysobjects c on a.column_id=c.id
        and a.[name]='列名' and c.[name]='表名'
        SELECT
        表名=case   when   a.colorder=1   then   d.name   else   ''   end,
        表说明=case   when   a.colorder=1   then   isnull(f.value,'')   else   ''   end,
        字段序号=a.colorder,
        字段名=a.name,
        标识=case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   '√'else   ''   end,
        主键=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   =   a.id   AND   colid=a.colid
        )))   then   '√'   else   ''   end,
        类型=b.name,
        占用字节数=a.length,
        长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
        小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
        允许空=case   when   a.isnullable=1   then   '√'else   ''   end,
        默认值=isnull(e.text,''),
        字段说明=isnull(g.[value],'')
        FROM   syscolumns   a
        left   join   systypes   b   on   a.xusertype=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
        left   join   sys.extended_properties   f   on   d.id=f.major_id   and   f.minor_id=0
        --where   d.name='orders'         --如果只查询指定表,加上此条件
        order   by   a.id,a.colorder




http://coding-in.net/445/
select
INFORMATION_SCHEMA.TABLES.TABLE_CATALOG,
INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA,
INFORMATION_SCHEMA.TABLES.TABLE_NAME
from INFORMATION_SCHEMA.TABLES
order by INFORMATION_schema.TABLES.TABLE_NAME





select
INFORMATION_schema.COLUMNS.TABLE_NAME,
INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME,
INFORMATION_schema.COLUMNS.DATA_TYPE,
INFORMATION_schema.COLUMNS.IS_NULLABLE
from INFORMATION_SCHEMA.COLUMNS
order by INFORMATION_schema.COLUMNS.TABLE_NAME





select
INFORMATION_SCHEMA.COLUMNS.TABLE_NAME
,INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME
,INFORMATION_SCHEMA.COLUMNS.IS_NULLABLE
,INFORMATION_SCHEMA.COLUMNS.DATA_TYPE
,INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_TYPE
from INFORMATION_SCHEMA.COLUMNS
left outer join INFORMATION_SCHEMA.KEY_COLUMN_USAGE
on INFORMATION_SCHEMA.KEY_COLUMN_USAGE.COLUMN_NAME = INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME
and INFORMATION_SCHEMA.KEY_COLUMN_USAGE.TABLE_NAME = INFORMATION_SCHEMA.COLUMNS.TABLE_NAME
and INFORMATION_SCHEMA.KEY_COLUMN_USAGE.TABLE_CATALOG = INFORMATION_SCHEMA.COLUMNS.TABLE_CATALOG
and INFORMATION_SCHEMA.KEY_COLUMN_USAGE.ORDINAL_POSITION = INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION
left outer join INFORMATION_SCHEMA.TABLE_CONSTRAINTS on
INFORMATION_SCHEMA.TABLE_CONSTRAINTS.TABLE_NAME = INFORMATION_SCHEMA.KEY_COLUMN_USAGE.TABLE_NAME
and INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_NAME = INFORMATION_SCHEMA.KEY_COLUMN_USAGE.CONSTRAINT_NAME
order by INFORMATION_schema.COLUMNS.TABLE_NAME

分享到:
评论

相关推荐

    Sql server 获取表字段属性信息,注释信息

    从Sql server 2008获取表字段属性信息,注释信息 。注意,字段说明除非有备注才显示,如果没有的的情况下显示空白是正常的。

    .NetCore Petapoco(SqlServer) T4模板(含表字段注释).rar

    在提供的".NetCore Petapoco(SqlServer) T4模板(含表字段注释)"压缩包中,已经包含了预配置的T4模板,该模板不仅能够生成实体类,还能够将数据库表的描述信息和字段注释一并引入,这样在编码过程中,开发者可以...

    sqlserver 导出表及字段说明脚本.rar

    这个压缩包"sqlserver 导出表及字段说明脚本.rar"包含了一个名为"sqlserver 导出表及字段说明脚本.sql"的文件,这通常是一个用于生成SQL语句的脚本,用于描述数据库中的表结构以及各字段的详细信息。以下是对这个...

    导出SQLSERVER表及字段说明.

    可以导出SQLSERVER表及字段说明.

    oracle+mysql+sql server 数据库字典表生成,生成表字段,注释,索引等数据库表结构数据 支持在线化

    oracle+mysql+sql server 数据库字典表生成,生成表字段,注释,索引等数据库表结构数据。 支持在线化。

    导出sqlserver 2008的表结构.txt

    在IT领域,特别是数据库管理与开发中,导出SQL Server 2008的表结构是一项常见且重要的任务。这不仅对于数据迁移、备份、分析或审计等场景至关重要,还能帮助DBA(数据库管理员)和开发者更好地理解现有数据库架构,...

    获取SQL Server表字段的各种属性实例代码

    在SQL Server中,获取表字段的各种属性是数据库管理和开发中常见的需求。这涉及到查询系统视图和系统存储过程以获取元数据信息。以下是从给定的实例代码中提炼出的相关知识点: 1. **系统视图**: - `syscolumns`:...

    sqlserver系统视图与存储过程应用说明

    sqlserver系统视图与存储过程应用说明,自己总结的,方便查看进程和表字段的注释

    表和字段的注释信息查询语句

    表注释信息,没有注释信息的表,字段注释信息,没有注释信息的字段

    检测数据表字段非法字符

    在数据库管理中,数据表字段的命名规则是至关重要的,因为它们直接影响到SQL查询的执行效率和系统的稳定性。非法字符通常是指那些不符合数据库系统规定或者可能导致解析错误的字符。本工具专注于检测数据表字段中...

    DBMetadata数据库元数据

    本工具可用于数据库表和字段的查询,以及数据库元数据的进一步使用。...目前支持以下数据库(都能正确获取注释信息): Oracle Mysql MariaDB SQLite Hsqldb PostgreSQL DB2 SqlServer(2005+) - 必须使用jtds驱动

    Java源码获取数据库中表的字段信息

    例如,`SHOW COLUMNS FROM table_name`在MySQL中可以获取表的字段信息,而在SQL Server中,可以使用`SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'table_name'`。 5. **处理结果集**:执行查询后...

    sql server数据库教程详解

    - **表字段**:定义表结构时,需要明确每个字段的名称和数据类型。 - **字段属性**:可以为字段设置默认值、约束等。 - **数据表快捷菜单**:在 SSMS 中,右键点击数据表可以进行添加、删除等操作。 #### 五、...

    SQLSERVER表结构查询及字段添加小工具

    通过这款工具,用户能够高效地查看数据库中的所有表及其详细结构,同时方便地添加或更新表字段的名称和注释,且更改会直接同步到数据库中。 首先,让我们深入了解SQL Server数据库中的表结构。表是数据库中的基本...

    SQL 2008 Northwind中文版与英文版数据库

    主要的差异在于数据库中的文本信息,如表字段名、注释和示例数据。中文版的数据库更适合中文使用者,而英文版则适合英语环境下的学习者。两者在数据库结构和功能上并无本质区别,主要是语言适应性的差异。 总的来说...

    得到SQL数据库中所有表字段及字段中文描述.docx

    例如,`syscolumns`存储了表的列信息,`systypes`包含了数据类型,`sysobjects`包含了数据库中的对象信息,`syscomments`用于获取默认值的注释,而`sysproperties`则提供了字段的附加属性,如字段说明。 对于SQL ...

    微软数据库管理软件SSMS中在表设计器中显示说明等列属性

    SSMS 提供了一个集成环境来查询、设计、构建和管理所有 SQL Server 组件,支持多种 SQL Server 平台,包括 SQL Server、SQL Server on Linux、Azure SQL Database 和 Azure Synapse Analytics。 SSMS 提供了丰富的...

    sqlserver 各种判断是否存在(表名、函数、存储过程等)

    在SQL Server中,判断某个对象是否存在是常见的操作,这包括检查数据库、表、函数或存储过程等。以下是一些相关的知识点: 1. **判断数据库是否存在**: 可以通过查询`master.dbo.sysdatabases`系统表来检查数据库...

    SQL Server 数据管理字典

    SQL Server 数据管理字典 主要功能:在此小软件上,能够比较清楚的看到数据库的各表字段及其注释

    CodeSmith 带注释的SchemaExplorer.SqlSchemaProvider

    在描述中提到的问题,即在使用CodeSmith与SQL Server交互时,无法获取到数据库表字段的注释,这是一个常见的困扰,因为字段注释在软件开发中对于理解和维护代码至关重要。 CodeSmith本身并不直接支持获取SQL Server...

Global site tag (gtag.js) - Google Analytics