sp_updateextendedproperty (Transact-SQL)

Actualiza el valor de una propiedad extendida existente.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_updateextendedproperty
    [ @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' }
                     ]
              ]
        ]
    ]

Argumentos

  • [ @name = ]{ 'property_name'}
    Es el nombre de la propiedad que se va a actualizar. property_name es de tipo sysname y no puede ser NULL.

  • [ @value = ]{ 'value'}
    Es el valor que se va a asociar a la propiedad. value es de tipo sql_variant y su valor predeterminado es NULL. El tamaño del parámetro value no puede ser superior a 7.500 bytes.

  • [ @level0type = ]{ 'level0_object_type'}
    Es el usuario o el tipo definido por el usuario. level0_object_type es de tipo varchar(128) y su valor predeterminado es NULL. Las entradas válidas son ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE y NULL.

    Nota importanteImportante

    USER y TYPE como tipos de nivel 0 se quitarán en una versión futura de SQL Server. Evite utilizar estas características en los nuevos trabajos de programación y planee modificar las aplicaciones que actualmente las utilizan. En lugar de USER, use SCHEMA como tipo de nivel 0. Para TYPE, use SCHEMA como tipo de nivel 0 y TYPE como tipo de nivel 1.

  • [ @level0name = ]{ 'level0_object_name'}
    Es el nombre del tipo de objeto de nivel 1 especificado.level0_object_name es de tipo sysname y su valor predeterminado es NULL.

  • [ @level1type = ]{ 'level1_object_type'}
    Es el tipo de objeto de nivel 1. level1_object_type es de tipo varchar(128) y su valor predeterminado es NULL. Las entradas válidas son AGGREGATE, DEFAULT, FUNCTION, LOGICAL FILE NAME, PROCEDURE, QUEUE, RULE, SYNONYM, TABLE, TYPE, VIEW, XML SCHEMA COLLECTION y NULL.

  • [ @level1name = ]{ 'level1_object_name'}
    Es el nombre del tipo de objeto de nivel 1 especificado.level1_object_name es de tipo sysname y su valor predeterminado es NULL.

  • [ @level2type = ]{ 'level2_object_type'}
    Es el tipo de objeto de nivel 2. level2_object_type es de tipo varchar(128) y su valor predeterminado es NULL. Las entradas válidas son COLUMN, CONSTRAINT, EVENT NOTIFICATION, INDEX, PARAMETER, TRIGGER y NULL.

  • [ @level2name = ]{ 'level2_object_name'}
    Es el nombre del tipo de objeto de nivel 2 especificado.level2_object_name es de tipo sysname y su valor predeterminado es NULL.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

Los objetos de una base de datos de SQL Server se clasifican en tres niveles (0, 1, 2) con el fin de especificar las propiedades extendidas. El nivel 0 es el nivel más elevado y se define como los objetos incluidos en el ámbito de la base de datos. Los objetos de nivel 1 se incluyen en un ámbito de esquema o de usuario, y los objetos de nivel 2 están incluidos en los objetos de nivel 1. Se pueden definir propiedades extendidas para los objetos de cualquiera de estos niveles. Las referencias a un objeto de un nivel deben estar calificadas con los nombres de los objetos del nivel superior que son sus propietarios o que los contienen. Para obtener una lista completa de los objetos y sus tipos de nivel 0, 1 y 2 válidos, vea Usar propiedades extendidas en objetos de base de datos.

Dados unos parámetros property_name y value válidos, si todos los tipos de objetos y nombres son NULL, la propiedad actualizada pertenece a la base de datos actual.

Permisos

Los miembros de los roles fijos de base de datos db_owner y db_ddladmin pueden actualizar las propiedades extendidas de cualquier objeto con la siguiente excepción: db_ddladmin no puede agregar propiedades a la base de datos, a los usuarios ni a los roles.

Los usuarios pueden actualizar las propiedades extendidas de los objetos de los que sean propietarios, o para los que tengan permisos ALTER o CONTROL. Para obtener una lista completa los permisos requeridos, vea Usar propiedades extendidas en objetos de base de datos.

Ejemplos

A. Actualizar una propiedad extendida de una columna

El siguiente ejemplo actualiza el valor de la propiedad Caption en la columna ID de la tabla T1.

USE AdventureWorks2008R2;
GO
CREATE TABLE T1 (id int , name char (20));
GO
EXEC sp_addextendedproperty 
    @name = N'Caption'
    ,@value = N'Employee ID'
    ,@level0type = N'Schema', @level0name = dbo
    ,@level1type = N'Table',  @level1name = T1
    ,@level2type = N'Column', @level2name = id;
GO
--Update the extended property.
EXEC sp_updateextendedproperty 
    @name = N'Caption'
    ,@value = 'Employee ID must be unique.'
    ,@level0type = N'Schema', @level0name = dbo
    ,@level1type = N'Table',  @level1name = T1
    ,@level2type = N'Column', @level2name = id;
GO

B. Actualizar una propiedad extendida de una base de datos

El siguiente ejemplo crea primero una propiedad extendida en la base de datos de muestra AdventureWorks2008R2 y después actualiza el valor de esa propiedad.

USE AdventureWorks2008R2;
GO
EXEC sp_addextendedproperty 
@name = N'NewCaption', @value = 'AdventureWorks2008R2 Sample OLTP Database';
GO
USE AdventureWorks2008R2;
GO
EXEC sp_updateextendedproperty 
@name = N'NewCaption', @value = 'AdventureWorks2008R2 Sample Database';
GO