sp_dropextendedproperty (Transact-SQL)

删除现有的扩展属性。

主题链接图标Transact-SQL 语法约定

语法

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

参数

  • [ @name= ]{ 'property_name'}
    要删除的属性的名称。property_name 的数据类型为 sysname,不能为 NULL。

  • [ @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、TABLE_TYPE、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(失败)

注释

为了指定扩展属性,将 SQL Server 数据库中的对象分为三个级别:0、1 和 2。级别 0 是最高级别,该级别被定义为数据库作用域中包含的对象。级别 1 的对象包含在架构作用域或用户作用域中,而级别 2 的对象包含在级别 1 对象中。可以为这些级别中任一级别的对象定义扩展属性。引用某个级别中的对象必须用所有更高级别对象的类型和名称进行限制。

给定一个有效的 property_name,如果所有对象类型和名称都是空的,并且当前数据库中存在一个属性,则删除该属性。请参阅本主题后面部分中的示例 B。

权限

db_ownerdb_ddladmin 固定数据库角色的成员可以删除任意对象的扩展属性,但以下情况例外:db_ddladmin 不能向数据库本身添加属性,也不能向用户或角色中添加属性。

用户可以删除他们所拥有的对象的扩展属性,或者删除他们对其具有 ALTER 或 CONTROL 权限的对象的扩展属性。有关所需权限的完整列表,请参阅对数据库对象使用扩展属性

示例

A. 删除列上的扩展属性

以下示例从架构 dbo 内包含的表 T1 中的列 id 上删除属性 'caption'。

CREATE TABLE T1 (id int , name char (20));
GO
EXEC sp_addextendedproperty 
    @name = 'caption' 
    ,@value = 'Employee ID' 
    ,@level0type = 'schema' 
    ,@level0name = dbo
    ,@level1type = 'table'
    ,@level1name = 'T1'
    ,@level2type = 'column'
    ,@level2name = id;
GO
EXEC sp_dropextendedproperty 
     @name = 'caption' 
    ,@level0type = 'schema' 
    ,@level0name = dbo
    ,@level1type = 'table'
    ,@level1name = 'T1'
    ,@level2type = 'column'
    ,@level2name = id;
GO
DROP TABLE T1;
GO

B. 删除数据库中的扩展属性

以下示例从 AdventureWorks 示例数据库中删除名为 MS_Description 的属性。由于属性位于数据库本身中,因此不指定对象类型和名称。

USE AdventureWorks;
GO
EXEC sp_dropextendedproperty 
@name = N'MS_Description';
GO