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

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

该方法主要是利用系统存储过程sp_addextendedproperty来向表添加扩展属性从而将注释信息添加进去。

通过下文的测试,数据库中的列字段、视图、存储过程、自定义函数均可以通过添加扩展属性来添加注释信息。

以下是示例代码:

-------------------系统存储过程sp_addextendedproperty代码--------------------------

create procedure sys.sp_addextendedproperty
@name sysname,
@value sql_variant = NULL,
@level0type varchar(128) = NULL,
@level0name sysname = NULL,
@level1type varchar(128) = NULL,
@level1name sysname = NULL,
@level2type varchar(128) = NULL,
@level2name sysname = NULL
as

declare @ret int
if datalength(@value) > 7500
begin
raiserror(15097,-1,-1)
return 1
end

if @name is null
begin
raiserror(15600,-1,-1,'sp_addextendedproperty')
return (1)
end

execute @ret = sys.sp_validname @name
if (@ret <> 0)
begin
raiserror(15600,-1,-1,'sp_addextendedproperty')
return (1)
end

BEGIN TRANSACTION

begin
EXEC %%ExtendedPropertySet().AddValue(Name = @name, Value = @value, Level0type = @level0type, Level0name = @level0name, Level1type = @level1type, Level1name = @level1name, Level2type = @level2type, Level2name = @level2name)
IF @@error <> 0
begin
COMMIT TRANSACTION
return (1)
end
end
COMMIT TRANSACTION
return (0)

------------------------------------------------------------------------------------------

--注释示例:

use Test
--利用扩展属性为表添加注释
exec sys.sp_addextendedproperty
@name = N'表注释'  --这里写名称
,@value =N'这是Test库的一个数据存储表.' --这里写注释内容
,@level0type = N'schema'  
,@level0Name =N'dbo'  
,@level1type = N'table'  
,@level1name = N'TableName'  --这里写表名称

--利用扩展属性为视图添加注释
exec sys.sp_addextendedproperty
@name = N'视图注释'
,@value =N'这是视图注释的一个示例.'
,@level0type = N'schema'
,@level0Name =N'dbo'
,@level1type = N'view'
,@level1name = N'View_Show_ChineseLanguage'

--利用扩展属性为存储过程添加注释
exec sys.sp_addextendedproperty
@name = N'存储过程注释'
,@value =N'这是存储过程注释的一个示例.'
,@level0type = N'schema'
,@level0Name =N'dbo'
,@level1type = N'procedure'
,@level1name = N'PRO_AnalyzeResult'

--利用扩展属性为函数添加注释
exec sys.sp_addextendedproperty
@name = N'函数注释'
,@value =N'这是函数注释的一个示例.'
,@level0type = N'schema'
,@level0Name =N'dbo'
,@level1type = N'function'
,@level1name = N'FUN_AnalyzeResult'

 --查询扩展属性

(未完。。。)

转载于:https://www.cnblogs.com/forevertime/p/4626210.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sql添加表列字段描述添加默认值删除字段 //删除表 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[JHCRM_Report_ss]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [JHCRM_Report_ss] //添加表 if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Table1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) create table [Table1] ([col1] int,[col2] int) //添加字段 if not exists( select * from syscolumns where syscolumns.[name]='FNewObjectEnd' and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[jsc_financial]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE jsc_financial ADD FNewObjectEnd int--NULL --添加先用项目结项数 go EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'先用项目结项数' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'jsc_financial', @level2type=N'COLUMN',@level2name=N'FNewObjectEnd' if not exists( select * from syscolumns where syscolumns.[name]='Record_Money' and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[JHCRM_Resource_Record_Main]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE JHCRM_Resource_Record_Main ADD Record_Money numeric(12, 2)--NULL --资源费用 go EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'资源费用' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'JHCRM_Resource_Record_Main', @level2type=N'COLUMN',@level2name=N'Record_Money' //删除字段 if not exists( select * from syscolumns where syscolumns.[name]=table_Name and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[tableName]')" and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE table_Name DROP COLUMN tableName
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值