关于SQL Server数据库中的注释---扩展属性的使用
2015-07-07 10:23
1056 查看
工作中遇到的问题,为了维护别人做的项目,需要了解该陌生的项目数据库,往往数据存储表的命名比较乱无法通过表命名来猜测其表存在的意义,看起来比较的费劲,相对于程序代码的注释数据库中的表是否也有注释的地方呢?所以我从网上查了下关于表的注释的问题,搜到了一些文章,其中一篇是利用表的扩展属性,通过向表添加扩展属性来进行注释说明。
该方法主要是利用系统存储过程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'
--查询扩展属性
(未完。。。)
该方法主要是利用系统存储过程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'
--查询扩展属性
(未完。。。)
相关文章推荐
- MySQL详解(20)-----------数据库备份和还原
- MongoDB服务的启动
- Nosql(hbase)与传统数据库的区别
- Oracle使用存储过程下载Blob大对象
- SQL连接查询深度探险
- Could not connect to Redis at XX.XX.XX.XX:XX: Cannot assign requested address
- SqlServer中查看当前Open的Cursor方法
- mysql中通过not exists寻找两个表中的差异数据
- mysql的源码包方式安装(mysql5.5)
- Oracle中instr函数使用方法
- Mysql中一些比较有用的命令
- SQlServer2008 之 定时执行sql语句作业的制定
- SQL Server中查看对象定义的SQL语句
- 收缩数据库日志
- sqlldr的用法详解
- Oracle 表被其他的 过程/视图 引用
- 使用ORACLE在线重定义将普通表改为分区表
- SQL注入攻击
- 数据库三范式
- Slave延迟很大的优化方法总结(MySQL优化)