sqlserver 编辑、修改字段说明(备注) sp_addextendedproperty

本文介绍如何在SQL Server中使用sp_addextendedproperty存储过程来为不同级别的数据库对象添加扩展属性,包括表、列和视图等。文章通过示例展示了如何创建、更新和删除这些属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语法

 
sp_addextendedproperty
    [ @name = ] { 'property_name' }
    [ , [ @value = ] { 'value' } 
        [ , [ @level0type = ] { 'level0_object_type' } 
                    , [ @level0name = ] { 'level0_object_name' } 
                [ , [ @level1type = ] { 'level1_object_type' } 
                                    , [ @level1name = ] { 'level1_object_name' } 
                        [ , [ @level2type = ] { 'level2_object_type' } 
                                                    , [ @level2name = ] { 'level2_object_name' } 
                        ] 
                ]
        ] 
    ] 

备注

为了指定扩展属性,SQL Server 数据库中的对象分为三个级别(0、1 和 2)。级别 0 是最高级别,定义为包含在数据库作用域中的对象。级别 1 的对象包含在架构作用域或用户作用域中,而级别 2 的对象包含在级别 1 对象中。可以为这些级别中任一级别的对象定义扩展属性。

引用某个级别中的对象必须用拥有或包含它们的更高级别对象的名称进行限制。例如,当将扩展属性添加到表列(级别 2)时,还必须指定包含该列的表名(级别 1)以及包含该表的架构(级别 0)。

有关对象及其有效的级别 0、1 和 2 类型的完整列表,请参阅对数据库对象使用扩展属性。

如果所有对象类型和名称都为空,则属性属于当前数据库本身。

对于系统对象、用户定义数据库的作用域以外的对象或者未在 Arguments 中作为有效输入列出的对象,不允许使用扩展属性。

架构与用户

在 SQL Server 的早期版本中,用户拥有表、视图和触发器之类的数据库对象。因此,允许将扩展属性添加到这些对象之一以及将用户名指定为级别 0 类型。但在 SQL Server 2005 中,数据库对象包含在架构中。它们独立于拥有架构的用户。

在 SQL Server 2005 中,我们建议不要在将扩展属性应用于数据库对象时指定 USER 作为级别 0 类型,因为这会导致名称解析不明确。例如,假定用户 Mary 拥有两个架构(Mary 和 MySchema),并且这两个架构都包含名为 MyTable 的表。如果 Mary 将扩展属性添加到表 MyTable 并指定 @level0type = N'USER'、@level0name = Mary,则扩展属性应用于哪个表并不明确。为了保持向后兼容,SQL Server 将属性应用于名为 Mary 的架构所包含的表。有关用户与架构的详细信息,请参阅用户架构分离。

参数

[ @name ] = { 'property_name' }

要添加的属性的名称。property_name 的数据类型为 sysname,不能为 NULL。名称还可以包括空格或非字母数字字符串以及二进制值。

[ @value = ] { 'value' }

要与属性关联的值。value 的数据类型为 sql_variant,默认值为 NULL。value 的大小不能超过 7,500 个字节。

[ @level0type = ] { 'level0_object_type' }

级别 0 对象的类型。level0_object_type 的数据类型为 varchar(128),默认值为 NULL。

有效的输入包括:ASSEMBLY、CONTRACT、EVENT NOTIFICATION、FILEGROUP、MESSAGE TYPE、PARTITION FUNCTION、PARTITION SCHEME、REMOTE SERVICE BINDING、ROUTE、SCHEMA、SERVICE、USER、TRIGGER、TYPE 和 NULL。

重要事项:
作为级别 0 类型的 USER 和 TYPE 将在 SQL Server 的未来版本中删除。请避免在新的开发工作中使用这些功能,并考虑修改当前使用这些功能的应用程序。改用 SCHEMA 代替 USER 作为级别 0 类型。对于 TYPE,请使用 SCHEMA 作为级别 0 类型,使用 TYPE 作为级别 1 类型。

[ @level0name = ] { 'level0_object_name' }

所指定的级别 0 对象类型的名称。level0_object_name 的数据类型为 sysname,默认值为 NULL。

[ @level1type = ] { 'level1_object_type' }

级别 1 对象的类型。level1_object_type 的数据类型为 varchar(128),默认值为 NULL。有效的输入包括:AGGREGATE、DEFAULT、FUNCTION、LOGICAL FILE NAME、PROCEDURE、QUEUE、RULE、SYNONYM、TABLE、TYPE、VIEW、XML SCHEMA COLLECTION 和 NULL。

[ @level1name = ] { 'level1_object_name' }

所指定的级别 1 对象类型的名称。level1_object_name 的数据类型为 sysname,默认值为 NULL。

[ @level2type = ] { 'level2_object_type' }

级别 2 对象的类型。level2_object_type 的数据类型为 varchar(128),默认值为 NULL。有效的输入包括:COLUMN、CONSTRAINT、EVENT NOTIFICATION、INDEX、PARAMETER、TRIGGER 和 NULL。

[ @level2name = ] { 'level2_object_name' }

所指定的级别 2 对象类型的名称。level2_object_name 的数据类型为 sysname,默认值为 NULL。

返回代码值

0(成功)或 1(失败)

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0:取消,1:已到,2:未到,3:预订违约' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Tab_Passenger', @level2type=N'COLUMN', @level2name=N'PassengerState'

-表及字段描述信息处理示例

--创建表
create table 表(a1 varchar(10),a2 char(2))

--为表添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '人员信息表', N'user', N'dbo', N'table', N'表', NULL, NULL

--为字段a1添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'table', N'表', N'column', N'a1'

--为字段a2添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '性别', N'user', N'dbo', N'table', N'表', N'column', N'a2'

--更新表中列a1的描述属性:
EXEC sp_updateextendedproperty 'MS_Description','字段1','user',dbo,'table','表','column',a1

--删除表中列a1的描述属性:
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column',a1

--删除测试
drop table 表
根据以下sqlserversql生成java实体对象: CREATE TABLE [dbo].[T_BUS_SLD] ( [XMB_CODE] varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL, [XMB_NUM] int NOT NULL, [SYS_JSQ] varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_DJBH] varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL, [GSFL_CODE] varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL, [GSFL_NAME] varchar(100) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_YYBZ] varchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_DKBZ] varchar(10) COLLATE Chinese_PRC_CI_AS NULL, [SLD_YFBZ] varchar(10) COLLATE Chinese_PRC_CI_AS NULL, [SLD_FSRQ] datetime NOT NULL, [SLD_DJZT] varchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_JZRQ] datetime NULL, [SLD_JZR] varchar(100) COLLATE Chinese_PRC_CI_AS NULL, [CK_CODE] varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL, [CK_NAME] varchar(100) COLLATE Chinese_PRC_CI_AS NOT NULL, [GYFS_CODE] varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL, [GYFS_NAME] varchar(100) COLLATE Chinese_PRC_CI_AS NOT NULL, [DFXMB_CODE] varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL, [DFDBD_CODE] varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL, [GYS_CODE] varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL, [GYS_NAME] varchar(200) COLLATE Chinese_PRC_CI_AS NOT NULL, [GYHT_CODE] varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_LLPZMC] varchar(100) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_LLPZBH] varchar(255) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_FDJSL] varchar(100) COLLATE Chinese_PRC_CI_AS NULL, [SLD_SJBZ] varchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL, [SJD_DJBH] varchar(30) COLLATE Chinese_PRC_CI_AS NULL, [SLD_ZBBZ] varchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL, [ZBLX_CODE] varchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL, [ZBLX_NAME] varchar(100) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_CGY] varchar(100) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_SLR] varchar(100) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_CZY] varchar(100) COLLATE Chinese_PRC_CI_AS NOT NULL, [SLD_CZSJ] datetime NOT NULL, [SLD_MEMO] varchar(255) COLLATE Chinese_PRC_CI_AS NULL, [SYS_AUTOUP] varchar(10) COLLATE Chinese_PRC_CI_AS DEFAULT 1 NULL, CONSTRAINT [pk_bus_sld] PRIMARY KEY NONCLUSTERED ([XMB_CODE], [XMB_NUM], [SLD_DJBH]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[T_BUS_SLD] SET (LOCK_ESCALATION = TABLE) GO EXEC sp_addextendedproperty 'MS_Description', N'项目部号', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'XMB_CODE' GO EXEC sp_addextendedproperty 'MS_Description', N'次号', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'XMB_NUM' GO EXEC sp_addextendedproperty 'MS_Description', N'结算期', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SYS_JSQ' GO EXEC sp_addextendedproperty 'MS_Description', N'单据编号', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_DJBH' GO EXEC sp_addextendedproperty 'MS_Description', N'物资分类', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'GSFL_CODE' GO EXEC sp_addextendedproperty 'MS_Description', N'分类名称', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'GSFL_NAME' GO EXEC sp_addextendedproperty 'MS_Description', N'预验标志', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_YYBZ' GO EXEC sp_addextendedproperty 'MS_Description', N'Sld Dkbz', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_DKBZ' GO EXEC sp_addextendedproperty 'MS_Description', N'Sld Yfbz', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_YFBZ' GO EXEC sp_addextendedproperty 'MS_Description', N'发生日期', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_FSRQ' GO EXEC sp_addextendedproperty 'MS_Description', N'单据状态', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_DJZT' GO EXEC sp_addextendedproperty 'MS_Description', N'记账日期', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_JZRQ' GO EXEC sp_addextendedproperty 'MS_Description', N'记账人', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_JZR' GO EXEC sp_addextendedproperty 'MS_Description', N'仓库编号', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'CK_CODE' GO EXEC sp_addextendedproperty 'MS_Description', N'仓库名称', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'CK_NAME' GO EXEC sp_addextendedproperty 'MS_Description', N'供应方式编号', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'GYFS_CODE' GO EXEC sp_addextendedproperty 'MS_Description', N'供应方式名称', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'GYFS_NAME' GO EXEC sp_addextendedproperty 'MS_Description', N'对方项目部号', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'DFXMB_CODE' GO EXEC sp_addextendedproperty 'MS_Description', N'对方调拨单号', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'DFDBD_CODE' GO EXEC sp_addextendedproperty 'MS_Description', N'供应商编号', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'GYS_CODE' GO EXEC sp_addextendedproperty 'MS_Description', N'供应商名称', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'GYS_NAME' GO EXEC sp_addextendedproperty 'MS_Description', N'供应合同号', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'GYHT_CODE' GO EXEC sp_addextendedproperty 'MS_Description', N'来料凭证名称', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_LLPZMC' GO EXEC sp_addextendedproperty 'MS_Description', N'来料凭证编号', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_LLPZBH' GO EXEC sp_addextendedproperty 'MS_Description', N'Sld Fdjsl', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_FDJSL' GO EXEC sp_addextendedproperty 'MS_Description', N'送检标志', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_SJBZ' GO EXEC sp_addextendedproperty 'MS_Description', N'Sjd Djbh', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SJD_DJBH' GO EXEC sp_addextendedproperty 'MS_Description', N'招标标准', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_ZBBZ' GO EXEC sp_addextendedproperty 'MS_Description', N'招标类型', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'ZBLX_CODE' GO EXEC sp_addextendedproperty 'MS_Description', N'招标类型名称', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'ZBLX_NAME' GO EXEC sp_addextendedproperty 'MS_Description', N'采购员', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_CGY' GO EXEC sp_addextendedproperty 'MS_Description', N'收料员', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_SLR' GO EXEC sp_addextendedproperty 'MS_Description', N'操作员', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_CZY' GO EXEC sp_addextendedproperty 'MS_Description', N'操作时间', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_CZSJ' GO EXEC sp_addextendedproperty 'MS_Description', N'备注', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SLD_MEMO' GO EXEC sp_addextendedproperty 'MS_Description', N'Sys Autoup', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD', 'COLUMN', N'SYS_AUTOUP' GO EXEC sp_addextendedproperty 'MS_Description', N'收料单', 'SCHEMA', N'dbo', 'TABLE', N'T_BUS_SLD'
最新发布
07-30
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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值