sp_addextendedproperty (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Agrega una nueva propiedad extendida a un objeto de base de datos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_addextendedproperty
    [ @name = ] N'name'
    [ , [ @value = ] value ]
    [ , [ @level0type = ] 'level0type' ]
    [ , [ @level0name = ] N'level0name' ]
    [ , [ @level1type = ] 'level1type' ]
    [ , [ @level1name = ] N'level1name' ]
    [ , [ @level2type = ] 'level2type' ]
    [ , [ @level2name = ] N'level2name' ]
[ ; ]

Argumentos

[ @name = ] N'name'

Nombre de la propiedad que se va a agregar. @name es sysname, sin ningún valor predeterminado y no puede ser NULL. Los nombres pueden incluir cadenas de caracteres en blanco o no alfanuméricos y valores binarios.

[ @value = ] value

Valor que se va a asociar a la propiedad . @value es sql_variant, con un valor predeterminado de NULL. El tamaño de @value no puede tener más de 7500 bytes.

[ @level0type = ] 'level0type'

Tipo de objeto de nivel 0. @level0type es varchar(128), con un valor predeterminado de 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
  • PLAN GUIDE
  • NULL

Importante

La capacidad de especificar USER como un tipo de nivel 0 en una propiedad extendida de un objeto de tipo de nivel 1 se quitará en una versión futura de SQL Server. Use SCHEMA como tipo de nivel 0 en su lugar. Por ejemplo, al definir una propiedad extendida en una tabla, especifique el esquema de la tabla en lugar de un nombre de usuario. La capacidad de especificar TYPE como tipo de nivel 0 se quitará en una versión futura de SQL Server. Para TYPE, use SCHEMA como tipo level-0 y TYPE como tipo level-1.

[ @level0name = ] N'level0name'

Nombre del tipo de objeto de nivel 0 especificado. @level0name es sysname, con un valor predeterminado de NULL.

[ @level1type = ] 'level1type'

Tipo de objeto de nivel 1. @level1type es varchar(128), con un valor predeterminado de NULL.

Las entradas válidas son:

  • AGGREGATE
  • DEFAULT
  • FUNCTION
  • LOGICAL FILE NAME
  • PROCEDURE
  • QUEUE
  • RULE
  • SEQUENCE
  • SYNONYM
  • TABLE
  • TABLE_TYPE
  • TYPE
  • VIEW
  • XML SCHEMA COLLECTION
  • NULL

[ @level1name = ] N'level1name'

Nombre del tipo de objeto de nivel 1 especificado. @level1name es sysname, con un valor predeterminado de NULL.

[ @level2type = ] 'level2type'

Tipo de objeto de nivel 2. @level2type es varchar(128), con un valor predeterminado de NULL.

Las entradas válidas son:

  • COLUMN
  • CONSTRAINT
  • EVENT NOTIFICATION
  • INDEX
  • PARAMETER
  • TRIGGER
  • NULL

[ @level2name = ] N'level2name'

Nombre del tipo de objeto de nivel 2 especificado. @level2name es sysname, con un valor predeterminado de NULL.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

Al especificar propiedades extendidas, los objetos de una base de datos de SQL Server se clasifican en tres niveles: 0, 1 y 2. El nivel 0 es el más alto y corresponde a los objetos contenidos 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. Por ejemplo, cuando se agrega una propiedad extendida a una columna de tabla (nivel 2), también se debe especificar el nombre de la tabla (nivel 1) que contiene la columna y el esquema (nivel 0) que contiene la tabla.

Si todos los tipos y nombres de objetos son NULL, la propiedad pertenece a la base de datos actual.

No se permiten propiedades extendidas en objetos del sistema, objetos fuera del ámbito de una base de datos definida por el usuario o objetos que no aparecen en Argumentos como entradas válidas.

No se permiten propiedades extendidas en tablas optimizadas para memoria.

Replicación de propiedades extendidas

Las propiedades extendidas solo se replican en la sincronización inicial entre el publicador y el suscriptor. Si agrega o modifica una propiedad extendida después de la sincronización inicial, el cambio no se replica. Para obtener más información sobre cómo replicar objetos de base de datos, vea Publicar datos y objetos de base de datos.

Esquema frente al usuario

No se recomienda especificar USER como un tipo de nivel 0 al aplicar una propiedad extendida a un objeto de base de datos, ya que esto puede provocar ambigüedad en la resolución de nombres. Por ejemplo, suponga que el usuario Mary posee dos esquemas (Mary y MySchema) y estos esquemas contienen una tabla denominada MyTable. Si Mary agrega una propiedad extendida a la tabla MyTable y especifica @level0type = 'USER', @level0name = N'Mary', no está claro en qué tabla se aplica la propiedad extendida. Para mantener la compatibilidad con versiones anteriores, SQL Server aplica la propiedad a la tabla contenida en el esquema denominado Mary.

Permisos

Los miembros del db_owner y db_ddladmin roles fijos de base de datos pueden agregar propiedades extendidas a cualquier objeto con la siguiente excepción: db_ddladmin no pueden agregar propiedades a la propia base de datos ni a usuarios o roles.

Los usuarios pueden agregar propiedades extendidas a los objetos que poseen o en los que tienen permisos ALTER o CONTROL.

Ejemplos

A Agregar una propiedad extendida a una base de datos

En el ejemplo siguiente se agrega el nombre de la propiedad Caption con el valor AdventureWorks2022 Sample OLTP Database a la base de datos de ejemplo AdventureWorks2022 .

USE AdventureWorks2022;
GO

--Add a caption to the AdventureWorks2022 Database object itself.
EXEC sp_addextendedproperty @name = N'Caption',
    @value = 'AdventureWorks2022 Sample OLTP Database';

B. Agregar una propiedad extendida a una columna de una tabla

En el ejemplo siguiente se agrega una propiedad de descripción (Caption) a la columna PostalCode de la tabla Address.

USE AdventureWorks2022;
GO

EXEC sp_addextendedproperty @name = N'Caption',
    @value = 'Postal code is a required column.',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address',
    @level2type = 'COLUMN', @level2name = N'PostalCode';
GO

C. Agregar una propiedad de máscara de entrada a una columna

En el ejemplo siguiente se agrega una propiedad 99999 or 99999-9999 or #### ### de máscara de entrada a la columna PostalCode de la tabla Address.

USE AdventureWorks2022;
GO

EXEC sp_addextendedproperty @name = N'Input Mask ',
    @value = '99999 or 99999-9999 or #### ###',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address',
    @level2type = 'COLUMN', @level2name = N'PostalCode';
GO

D. Agregar una propiedad extendida a un grupo de archivos

En el ejemplo siguiente se agrega una propiedad extendida al grupo de archivos PRIMARY .

USE AdventureWorks2022;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_DescriptionExample',
    @value = N'Primary filegroup for the AdventureWorks2022 sample database.',
    @level0type = 'FILEGROUP', @level0name = N'PRIMARY';
GO

E. Agregar una propiedad extendida a un esquema

En el ejemplo siguiente se agrega una propiedad extendida al esquema HumanResources .

USE AdventureWorks2022;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_DescriptionExample',
    @value = N'Contains objects related to employees and departments.',
    @level0type = 'SCHEMA', @level0name = N'HumanResources';

F. Agregar una propiedad extendida a una tabla

En el siguiente ejemplo se agrega una propiedad extendida a la tabla Address del esquema Person .

USE AdventureWorks2022;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_DescriptionExample',
    @value = N'Street address information for customers, employees, and vendors.',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address';
GO

G. Agregar una propiedad extendida a un rol

En el ejemplo siguiente se crea un rol de aplicación y se agrega una propiedad extendida al rol.

USE AdventureWorks2022;
GO

CREATE APPLICATION ROLE Buyers
    WITH Password = '987G^bv876sPY)Y5m23';
GO

EXEC sys.sp_addextendedproperty @name = N'MS_Description',
    @value = N'Application Role for the Purchasing Department.',
    @level0type = 'USER', @level0name = N'Buyers';

H. Agregar una propiedad extendida a un tipo

En el ejemplo siguiente se agrega una propiedad extendida a un tipo.

USE AdventureWorks2022;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_Description',
    @value = N'Data type (alias) to use for any column that represents an order number. For example a sales order number or purchase order number.',
    @level0type = 'SCHEMA', @level0name = N'dbo',
    @level1type = 'TYPE', @level1name = N'OrderNumber';

I. Agregar una propiedad extendida a un usuario

En el ejemplo siguiente se crea un usuario y se agrega una propiedad extendida al usuario.

USE AdventureWorks2022;
GO

CREATE USER CustomApp WITHOUT LOGIN;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_Description',
    @value = N'User for an application.',
    @level0type = 'USER', @level0name = N'CustomApp';