sp_addextendedproperty (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure 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';