MS SQLServer 使用列扩展属性添加表字段说明
方式一:在SSMS对象资源管理器中添加表字段扩展属性
方式二:使用T-SQL添加表字段说明
2.1 创建添加表字段说明的存储过程
--功能:删除表@tblName的@FieldName字段的字段说明
CREATE Proc sp_SYS_DropFieldDesc(@tblName varchar(50), @FieldName varchar(50))
As
if Exists(Select 1 From sys.fn_listextendedproperty('MS_Description', 'user', 'dbo', 'table', @tblName, 'column', @FieldName))
Exec sp_DropExtendedProperty 'MS_Description', 'user', 'dbo', 'table', @tblName, 'column', @FieldName
--功能:向表@tblName的@FieldName字段增加字段说明@Description
CREATE Proc sp_SYS_AddFieldDesc(@tblName varchar(50), @FieldName varchar(50), @Description varchar(255))
As
Exec sp_SYS_DropFieldDesc @tblName, @FieldName
Exec sp_AddExtendedProperty 'MS_Description', @Description, 'user', 'dbo', 'table', @tblName, 'column', @FieldName
Go
2.2 直接调用存储过程添加字段说明
Exec sp_SYS_AddFieldDesc 't_SYS_PrjInfo', 'PrjName', '工程名称AppPrjName'
2.3 读取添加的字段说明
--功能:读取表@tblName的@FieldName字段的字段说明
Create Function f_SYS_GetFieldDesc(@tblName varchar(50), @FieldName varchar(50))
Returns Varchar(254)
As
Begin
Return ISNULL((Select Cast(Value as varchar(254)) From ::fn_listextendedproperty('MS_Description', 'user', 'dbo', 'table',
@tblName, 'column', @FieldName)), '')
End
--Select dbo.f_SYS_GetFieldDesc('t_SYS_PrjInfo', 'PrjName') --工程名称AppPrjName
2.4 读取表字段名称、类型、主键、说明等信息
--功能:获取表字段信息
Create Proc sp_SYS_TableInfo(@TableName varchar(100))
As
Select
PrimaryKey = Case When i.is_primary_key Is Not Null Then '√' Else '' End,
Colname = c.Name,
TypeName = t.Name,
[Length] = c.max_length,
IsNullable = Case when c.is_nullable = 0 then '' else '√' end,
IsIdentity = Case when c.is_identity = 0 then '' else '√' end,
ISNULL((select Top 1 q.text from syscomments q Where q.id=c.default_object_id),'') as DefaultValue,
ColDESC = dbo.f_SYS_GetFieldDesc(@TableName, c.Name),
c.precision ,
c.scale
From sys.columns c
Inner Join sys.types t On c.system_type_id = t.system_type_id And c.user_type_id = t.user_type_id
Left Outer Join ( sys.index_columns ic
Inner Join sys.indexes i On ic.object_id = i.object_id
And i.is_primary_key = 1
And ic.index_id = i.index_id
) On ic.object_id = c.object_id
And ic.column_id = c.column_id
Where c.object_id = Object_Id(@TableName)
Order By c.Column_ID
效果如下图:
说明:以上使用的是SQL Server2014版本
使用技巧
在SSMS工具—选项—键盘快捷方式中设置好快捷方式对应执行的存储过程,如Ctrl+3设置为我们上面创建的sp_SYS_TableInfo存储过程,这样就可以直接使用快捷方式快速的查看任何数据库表的字段名称、类型、主键、说明等信息。