关于数据库对象的扩展属性

今天有人问有没有办法查看表的注释,或查询所有表的注释。这里所说的表或表字段等的注释,其实是数据库对象的扩展属性。在MSSQL中,支持把一些注释性的内容放到数据库或数据库对象中,增强可读性,有助于日后的管理和维护工作。扩展属性的内容可以通过SSMS添加、修改或删除,也可以通过系统视图查询,通过执行相关的存储过程来维护。

创建一张测试表:

IF OBJECT_ID(N‘T8‘) IS NOT NULL
BEGIN
    DROP TABLE T8
END
GO

CREATE TABLE T8 (
    id INT NOT NULL,
    name NVARCHAR(20)
)
GO

code-1

添加表的扩展属性:在Object Explorer中找到新建的表,右键选择属性。

figure-1

点击扩展属性,即可进行添加、修改和删除。

figure-2

添加字段的扩展属性。

figure-3

字段属性——描述,添加注释内容。

figure-4

保存后,即可完成对字段扩展属性的添加。可通过系统视图sys.extended_properties进行查询。

SELECT *,OBJECT_NAME(major_id) AS obj_name FROM sys.extended_properties

code-2

从下图可看到,刚才在SSMS上添加的属性已经被查询出来。默认的扩展属性名是MS_Description。

figure-5

系统视图sys.extended_properties每个字段的详细说明,可查阅SQL联机从书。除了系统视图,也可以通过函数fn_listextendedproperty查询。

SELECT objtype, objname, name, value
FROM fn_listextendedproperty(default, ‘SCHEMA‘, ‘dbo‘, ‘TABLE‘, ‘T8‘, default, default);

SELECT objtype,objname,name,value
FROM fn_listextendedproperty(default, ‘SCHEMA‘, ‘dbo‘, ‘TABLE‘, ‘T8‘, ‘COLUMN‘, ‘id‘);

SELECT objtype,objname,name,value
FROM fn_listextendedproperty(default, ‘SCHEMA‘, ‘dbo‘, ‘TABLE‘, ‘T8‘, ‘COLUMN‘, ‘name‘);

code-3

figure-6

扩展属性可以使用相关的存储过程进行维护。再执行code-1的代码,重建测试表,相关的属性也会删除。执行存储过程sp_addextendedproperty 进行添加。存储过程的参数使用,请查阅文档,本文末尾提供链接。

EXEC sp_addextendedproperty
@name = N‘MS_Description‘,
@value = N‘This is a table description on [T8](2).‘,
@level0type = N‘SCHEMA‘, @level0name = N‘dbo‘,
@level1type = N‘TABLE‘, @level1name = N‘T8‘
GO

EXEC sp_addextendedproperty
@name = N‘MS_Description‘,
@value = N‘This is a column description on [id](2).‘,
@level0type = N‘SCHEMA‘, @level0name = N‘dbo‘,
@level1type = N‘TABLE‘, @level1name = N‘T8‘,
@level2type = N‘COLUMN‘, @level2name = N‘id‘
GO

EXEC sp_addextendedproperty
@name = N‘MS_Description‘,
@value = N‘This is a column description on [name](2).‘,
@level0type = N‘SCHEMA‘, @level0name = N‘dbo‘,
@level1type = N‘TABLE‘, @level1name = N‘T8‘,
@level2type = N‘COLUMN‘, @level2name = N‘name‘
GO

code-4

查询sys.extended_properties,已经成功添加表和字段的扩展属性。

figure-7

执行sp_dropextendedproperty删除现有扩展属性。

EXEC sp_dropextendedproperty
@name = N‘MS_Description‘,
@level0type = N‘SCHEMA‘, @level0name = N‘dbo‘,
@level1type = N‘TABLE‘, @level1name = N‘T8‘,
@level2type = N‘COLUMN‘, @level2name = N‘name‘
GO

code-5

再查询sys.extended_properties,字段name的扩展属性已经被删除。

figure-8

使用sp_updateextendedproperty更新扩展属性。

EXEC sp_updateextendedproperty
@name = N‘MS_Description‘,
@value = N‘This is a column description on [id](3).‘,
@level0type = N‘SCHEMA‘, @level0name = N‘dbo‘,
@level1type = N‘TABLE‘, @level1name = N‘T8‘,
@level2type = N‘COLUMN‘, @level2name = N‘id‘
GO

code-6

figure-9

不仅表可以添加扩展属性,其他数据库对象也可以,如数据库,索引等。

USE AdventureWorks2008R2;
GO

SELECT *,OBJECT_NAME(major_id) AS obj_name FROM sys.extended_properties
GO

code-7

figure-10

figure-11

参考文档:

对数据库对象使用扩展属性:

https://technet.microsoft.com/zh-cn/library/ms190243%28v=sql.105%29.aspx

查看扩展属性:

https://technet.microsoft.com/zh-cn/library/ms186989%28v=sql.105%29.aspx

sys.extended_properties:

https://technet.microsoft.com/zh-cn/library/ms177541%28v=sql.105%29.aspx

sp_addextendedproperty:

https://technet.microsoft.com/zh-cn/library/ms180047%28v=sql.105%29.aspx

sp_dropextendedproperty:

https://technet.microsoft.com/zh-cn/library/ms178595%28v=sql.105%29.aspx

sp_updateextendedproperty:

https://technet.microsoft.com/zh-cn/library/ms186885%28v=sql.105%29.aspx

fn_listextendedproperty:

https://technet.microsoft.com/zh-cn/library/ms179853%28v=sql.105%29.aspx

时间: 2024-10-01 05:09:50

关于数据库对象的扩展属性的相关文章

SQL Server扩展属性的增、删、改、查

使用 sql 语句创建表时,可以使用系统存储过程 sp_addextendedproperty 给字段添加描述说明. sp_addextendedproperty 语法: 1 sp_addextendedproperty 2 [ @name = ] { 'property_name' } 3 [ , [ @value = ] { 'value' } 4 [ , [ @level0type = ] { 'level0_object_type' } 5 , [ @level0name = ] { '

SQL Server -查看数据库扩展属性

1.fn_listextendedproperty 函数可以基于对象类型显示单个数据库对象或数据库中所有对象的扩展属性.例如,可以返回表或表中所有列的扩展属性. A.下面的示例显示了数据库本身设置的所有扩展属性. USE AdventureWorks2008R2; GO SELECT objtype, objname, name, value FROM fn_listextendedproperty(default, default, default, default, default, def

PowerDesigner 16.5对SQL Server 2012 生成数据库时"不支持扩展属性"问题

团队合作设计一套系统数据模型,创建了PDM后,Table.View.Store Procedure等都创建好了,且创建了多个Schema方便管理这些数据库对象,但Table.view.Column等对象有Comment时(用来在团队不同成员间共享描述信息) 生成数据库时会得到一个提示"不支持扩展属性,或对象不存在",分析发现异常在类似以下语句: if exists(select 1 from sys.extended_properties p where p.major_id = ob

YbSoftwareFactory 代码生成插件【十九】:实体类配合数据库表字段进行属性扩展的小技巧

实体类通常需要和数据库表进行了ORM映射,当你需要添加新的属性时,往往同时也需要在数据库中添加相应的字段并配置好映射关系,同时可能还需对数据访问组件进行重新编译和部署才能有效.而当你开始设计一个通用数据访问组件后,因为项目需求的不同和需求的不断变化演变,很难不能保证不会再添加额外的属性和字段.特别是项目部署运行后,添加一个属性和字段带来的额外维护的工作量可能要远远超过对代码进行调整的工作量.本文提供了属性字段扩展的一种思路,在满足核心字段可通过实体类强类型进行访问的同时,还可通过C# 4.0提供

关于SQL Server数据库中的注释---扩展属性的使用

工作中遇到的问题,为了维护别人做的项目,需要了解该陌生的项目数据库,往往数据存储表的命名比较乱无法通过表命名来猜测其表存在的意义,看起来比较的费劲,相对于程序代码的注释数据库中的表是否也有注释的地方呢?所以我从网上查了下关于表的注释的问题,搜到了一些文章,其中一篇是利用表的扩展属性,通过向表添加扩展属性来进行注释说明. 该方法主要是利用系统存储过程sp_addextendedproperty来向表添加扩展属性从而将注释信息添加进去. 通过下文的测试,数据库中的列字段.视图.存储过程.自定义函数均

spring data mongodb中,如果对象中的属性不想加入到数据库字段中

spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://www.boyunjian.com/javadoc/org.springframework.data/spring-data-mongodb/1.2.3.RELEASE/_/org/springframework/data/mongodb/core/query/Criteria.html#all(jav

中小型商城系统中的分类/产品属性/扩展属性的数据库设计

声明:之所以定位在"中小型"商城系统,而非“大型”(指淘宝.拍拍这类巨无霸),理由很简单----我一直都呆在(创业型的)小公司,没见过这些大家伙是怎么设计的:) 正文: 之前发表过一篇"商城系统中[商品扩展属性]的表单生成及客户端验证",部分童鞋对于后台数据库的设计比较感兴趣,于是今天把这部分也补上. 一.产品分类设计越来越多的商城系统都热衷于选择“无限级分类”的设计,我也不例外,因为它方便扩展.这部分就不详细展开了,详见 无限级分类(非递归算法/存储过程版/GUI

Android 学习笔记之AndBase框架学习(五) 数据库ORM..注解,数据库对象映射...

PS:好久没写博客了... 学习内容: 1.DAO介绍,通用DAO的简单调度过程.. 2.数据库映射关系... 3.使用泛型+反射+注解封装通用DAO.. 4.使用AndBase框架实现对DAO的调用实现数据库基本操作.. 1.DAO..   DAO..这个说法大家都不陌生..数据库操作访问对象的抽象接口层..在DAO内部封装好通用的方法..然后再使用一个具体类来进行实现..在我们想要调用这些方法对数据库进行相关操作时..只需要传递数据实体对象,就可以通过实体对象的传递从而实现对数据库进行操作.

oracle(创建数据库对象)

1 --创建数据库 2 --1.SYSDBA系统权限 3 startup:--启动数据库. 4 shutdown:--关闭数据库. 5 alter database[mount]|[open]|[backup]|[character set]:--修改数据库到加载状态.打开状态,备份数据库,修改数据库字符集. 6 create database:--创建数据库. 7 drop database:--删除数据库. 8 create spfile:--创建服务器初始化参数文件. 9 alter da