SQL属性说明添加

--1.为表添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '表描述', N'user', N'dbo', N'table', N'表名', NULL, NULL
--2.删除表说明
EXEC sp_dropextendedproperty N'MS_Description','user','dbo','table', '表名', NULL,NULL
--1.为字段name添加描述信息 姓名
EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'table', N'表名', N'column', N'name'
EXECUTE sp_addextendedproperty   N'MS_Description','字段说明内容',N'user',N'dbo',N'table',N'表名',N'column',N'字段名'
--2.更新表中列a1的描述属性:
EXEC sp_updateextendedproperty 'MS_Description','字段1','user',dbo,'table','表','column',name
EXEC sp_updateextendedproperty 'MS_Description','字段说明','user',dbo,'table','Test','column',cn1 
--3.删除表中列a1的描述属性:
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column',name
EXEC sp_dropextendedproperty N'MS_Description', 'user','dbo', 'table', '表名', 'column','字段名'
EXEC sp_dropextendedproperty N'MS_Description', 'user','dbo', 'table', 'Test', 'column','cn2'


exec [SetColumnInfo] 'Test', 'cn3', N'有钱吗22','varchar(300)',''

go
/********调用方法**********
name: kele 181102
作用: 添加列并添加列描述信息,修改说明
调用: 
exec [SetColumnInfo] '表名', '列名', N'列说明,描述','列类型{默认:NVARCHAR(50)}','列默认值{默认:NULL}'
******************/
alter PROCEDURE [dbo].[SetColumnInfo]
@tableName NVARCHAR(100) --表名
,@columnName NVARCHAR(100) --列名
,@columnInfo NVARCHAR(2000) --列说明,描述
,@columnType NVARCHAR(100)='NVARCHAR(50)' --列类型 例如: NVARCHAR(50)
,@columnDefault NVARCHAR(100)='NULL' --列默认值 例如: NULL
as
begin
IF NOT EXISTS (
SELECT *
FROM syscolumns
WHERE id = object_id(@tableName)
AND NAME = @columnName
)
BEGIN
print 'exec:'+('ALTER TABLE ' + @tableName + ' ADD ' + @columnName + '' + @columnType + '' + @columnDefault)
print 'Add ['+@columnName+'] column'
EXEC ('ALTER TABLE ' + @tableName + ' ADD ' + @columnName + ' ' + @columnType + ' ' + @columnDefault)
END
else
begin   --修个表结构
print 'exec:'+('ALTER TABLE ' + @tableName + ' ALTER column ' + @columnName + '' + @columnType + '' + @columnDefault)
EXEC ('ALTER TABLE ' + @tableName + ' ALTER column ' + @columnName + ' ' + @columnType + ' ' + @columnDefault) 
end

IF EXISTS (
SELECT *
FROM::fn_listextendedproperty('MS_Description', 'SCHEMA' --用户或用户定义类型
, N'dbo' --指定的 0 级对象类型的名称
, N'TABLE' --1 级对象的类型 
, @tableName --指定的 1 级对象类型的名称
, N'COLUMN' --2 级对象的类型
, @columnName --指定的 2 级对象类型的名称
)
)
BEGIN
print 'Edit['+@columnName+']Description'
EXEC sys.sp_updateextendedproperty @name = N'MS_Description' --要添加的属性名称
,@value = @columnInfo --将要与属性相关联的值
,@level0type = N'SCHEMA' --用户或用户定义类型
,@level0name = N'dbo' --指定的 0 级对象类型的名称
,@level1type = N'TABLE' --1 级对象的类型 
,@level1name = @tableName --指定的 1 级对象类型的名称
,@level2type = N'COLUMN' --2 级对象的类型
,@level2name = @columnName --指定的 2 级对象类型的名称
END
ELSE
BEGIN
print 'Add['+@columnName+']Description'
EXEC sys.sp_addextendedproperty @name = N'MS_Description' --要添加的属性名称
,@value = @columnInfo --将要与属性相关联的值
,@level0type = N'SCHEMA' --用户或用户定义类型
,@level0name = N'dbo' --指定的 0 级对象类型的名称
,@level1type = N'TABLE' --1 级对象的类型 
,@level1name = @tableName --指定的 1 级对象类型的名称
,@level2type = N'COLUMN' --2 级对象的类型
,@level2name = @columnName --指定的 2 级对象类型的名称
END
end
GO


---查看表结构说明文档

SELECT 
TableName = OBJECT_NAME(c.object_id), 
ColumnsName = c.name, 
Description = ex.value, 
ColumnType=t.name, 
Length=c.max_length 
FROM 
sys.columns c 
LEFT OUTER JOIN 
sys.extended_properties ex 
ON 
ex.major_id = c.object_id 
AND ex.minor_id = c.column_id 
AND ex.name = 'MS_Description' 
left outer join 
systypes t 
on c.system_type_id=t.xtype 
WHERE 
OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0 
AND OBJECT_NAME(c.object_id) ='表名'



---查看所有表说明
select top 1000
ROW_NUMBER() OVER (ORDER BY a.name) AS No, 
a.name AS 表名,
CONVERT(NVARCHAR(100),isnull(g.[value],'-')) AS 说明
from
sys.tables a left join sys.extended_properties g
on (a.object_id = g.major_id AND g.minor_id = 0)

  

posted @ 2020-01-20 14:28  水龙  阅读(770)  评论(0编辑  收藏  举报