Usar propiedades extendidas en objetos de base de datos
Al usar propiedades extendidas, puede agregar texto, por ejemplo contenido descriptivo o instructivo, agregar máscaras de entrada, y agregar reglas de formato como propiedades de objetos de una base de datos o de la base de datos misma. Por ejemplo, puede agregar una propiedad extendida a un esquema, a una vista de esquema o a una columna de la vista. Como las propiedades extendidas se almacenan en la base de datos, todas las aplicaciones que leen las propiedades pueden evaluar el objeto de la misma manera. Esto ayuda a exigir coherencia en la forma en que todos los programas tratan a los datos en el sistema.
Las propiedades extendidas se pueden utilizar para lo siguiente:
Especificar un título para una tabla, vista o columna. De esta manera, las aplicaciones pueden utilizar el mismo título en una interfaz de usuario que muestre información de esa tabla, vista o columna.
Especificar una máscara de entrada para una columna, de manera que las aplicaciones puedan validar datos antes de ejecutar una instrucción Transact-SQL. Por ejemplo, el formato requerido para una columna de código postal o número de teléfono se puede especificar en la propiedad extendida.
Especificar reglas de formato para mostrar los datos en una columna.
Registrar una descripción de los objetos de base de datos específicos que las aplicaciones pueden mostrar a los usuarios. Por ejemplo, se pueden usar descripciones en una aplicación o un informe del diccionario de datos.
Especificar el tamaño y la ubicación de la ventana en la que se mostrará una columna.
Nota
No se deben utilizar propiedades extendidas para ocultar información confidencial de un objeto. Todo usuario al que se le haya concedido permiso para el objeto podrá ver las propiedades extendidas de ese objeto. Por ejemplo, si concede el permiso de usuario SELECT para una tabla, el usuario podrá ver las propiedades extendidas de esa tabla.
Definir las propiedades extendidas
Cada propiedad extendida tiene un nombre y un valor definidos por el usuario. El valor de una propiedad extendida es un valor sql_variant que puede contener hasta 7.500 bytes de datos. Se pueden agregar varias propiedades extendidas a un solo objeto.
Para 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 están contenidos en el ámbito del esquema o del usuario, mientras que los de nivel 2 están contenidos en los objetos de nivel 1. Se pueden definir propiedades extendidas para 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 agrega una propiedad extendida a una columna de la tabla, nivel 2, también debe especificar el nombre de la tabla, nivel 1, que contiene la columna, y el esquema, nivel 0, que contiene la tabla.
En el siguiente ejemplo, el valor de la propiedad extendida 'Minimum inventory quantity.' se agrega a la columna SafetyStockLevel de la tabla Product, contenida en el esquema Production .
USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Minimum inventory quantity.',
@level0type = N'SCHEMA', @level0name = Production,
@level1type = N'TABLE', @level1name = Product,
@level2type = N'COLUMN', @level2name = SafetyStockLevel;
GO
Agregar propiedades extendidas a objetos
En las siguientes tablas se enumeran los objetos a los que puede agregar propiedades extendidas. Se incluyen los tipos de objeto válidos de nivel 0, nivel 1 y nivel 2, así como los permisos requeridos para agregar, quitar o ver las propiedades extendidas.
Aggregate
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
Se debe usar SCHEMA en lugar de USER. Vea "Esquema frente a usuario" más adelante en este tema. |
1 |
AGGREGATE |
ALTER en OBJECT de agregado |
Cualquiera en OBJECT |
Se aplica a las funciones de agregado definidas por el usuario CLR. |
Clave asimétrica
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o eliminar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
ASYMMETRIC KEY |
ALTER en CERTIFICATE |
Cualquiera en KEY |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Assembly
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
ASSEMBLY |
ALTER en ASSEMBLY |
Cualquiera en ASSEMBLY |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Certificado
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o eliminar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
CERTIFICATE |
ALTER en CERTIFICATE |
Cualquiera en CERTIFICATE |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Contract (Service Broker)
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
CONTRACT |
ALTER en CONTRACT |
Cualquiera en CONTRACT |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Database
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
Ninguno |
ALTER en DATABASE |
CONTROL en DATABASE O bien TAKE OWNERSHIP en DATABASE O bien VIEW DEFINITION en DATABASE O bien ALTER ANY DATABASE en SERVER O bien CREATE DATABASE en SERVER |
La propiedad se aplica a la base de datos misma. |
1 |
Ninguno |
|
|
|
2 |
Ninguno |
|
|
|
Ejemplo
En el siguiente ejemplo, se agrega una propiedad extendida a la base de datos de ejemplo de AdventureWorks2008R2 misma.
USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'AdventureWorks2008R2 Sample OLTP Database';
GO
Default
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
|
1 |
DEFAULT |
ALTER en SCHEMA |
HAS_DBACCESS = 1 |
Se incluye únicamente para mantener la compatibilidad con versiones anteriores. Para obtener más información, vea Características desusadas del motor de base de datos de SQL Server 2008 R2. |
2 |
Ninguno |
|
|
|
Event Notification
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
EVENT NOTIFICATION |
ALTER ANY DATABASE EVENT NOTIFICATION ON DATABASE |
Propietario de la notificación de eventos o bien CONTROL, ALTER, TAKE OWNERSHIP o VIEW DEFINITION en la base de datos O bien ALTER ANY DATABASE EVENT NOTIFICATION |
Se aplica a las notificaciones de eventos de la base de datos que son primarias para la base de datos. No se pueden agregar propiedades extendidas a las notificaciones de eventos del servidor. |
1 |
Ninguno |
|
|
|
2 |
Ninguno |
|
|
|
Filegroup o File Name
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
FILEGROUP |
ALTER en DATABASE |
HAS_DBACCESS = 1 |
1 |
LOGICAL FILE NAME |
ALTER en DATABASE |
HAS_DBACCESS = 1 |
2 |
Ninguno |
|
|
Ejemplo
En el siguiente ejemplo, se agrega una propiedad extendida al grupo de archivos PRIMARY.
USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Primary filegroup for the AdventureWorks2008R2 sample database.',
@level0type = N'FILEGROUP', @level0name = [PRIMARY];
GO
En el siguiente ejemplo, se agrega una propiedad extendida al nombre de archivo lógico AdventureWorks2008R2_Data del grupo de archivos PRIMARY.
USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Primary data file for the AdventureWorks2008R2 sample database.',
@level0type = N'FILEGROUP', @level0name = [PRIMARY],
@level1type = N'Logical File Name', @level1name = AdventureWorks2008R2_Data;
GO
Function
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
Se debe usar SCHEMA en lugar de USER. Vea "Esquema frente a usuario" más adelante en este tema. |
1 |
FUNCTION |
ALTER en OBJECT de función |
Cualquiera en COLUMN O bien Cualquiera en OBJECT |
Se aplica a las siguientes funciones definidas por el usuario:
Si no se especifica un tipo de nivel 2, la propiedad se aplica a la función en sí misma. |
2 |
COLUMN |
ALTER en OBJECT de función |
Cualquiera en COLUMN O bien Cualquiera en OBJECT |
|
2 |
CONSTRAINT |
ALTER en OBJECT de función |
Cualquiera en COLUMN O bien Cualquiera en OBJECT |
|
2 |
PARAMETER |
ALTER en OBJECT de función |
Cualquiera en COLUMN O bien Cualquiera en OBJECT |
|
Ejemplo
En el siguiente ejemplo, se agrega una propiedad extendida a la función definida por el usuario ufnGetStock.
USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Scalar function returning the quantity of inventory for a specified ProductID.',
@level0type = N'SCHEMA', @level0name = [dbo],
@level1type = N'FUNCTION', @level1name = ufnGetStock;
GO
En el siguiente ejemplo, se agrega una propiedad extendida al parámetro @ProductID definido en la función definida por el usuario ufnGetStock.
USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Input parameter. Enter a valid ProductID.',
@level0type = N'SCHEMA', @level0name = [dbo],
@level1type = N'FUNCTION', @level1name = ufnGetStock,
@level2type = N'PARAMETER', @level2name ='@ProductID';
GO
Message Type
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
MESSAGE TYPE |
ALTER en MESSAGE TYPE |
HAS_DBACCESS = 1 |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Partition Function
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
PARTITION FUNCTION |
ALTER ANY DATASPACE en DATABASE |
HAS_DBACCESS = 1 |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Partition Scheme
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
PARTITION SCHEME |
ALTER ANY DATASPACE en DATABASE |
HAS_DBACCESS = 1 |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Guía de plan
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o eliminar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
PLAN GUIDE |
ALTER ANY DATASPACE en DATABASE |
VIEW DEFINITION, ALTER, TAKE OWNERSHIP o CONTROL en base de datos para guías SQL o TEMPLATE y VIEW DEFINITION, ALTER, TAKE OWNERSHIP o CONTROL en objeto para guías OBJECT |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
En el siguiente ejemplo, se agrega una propiedad extendida a la guía de plan TemplateGuide1.
USE AdventureWorks2008R2;
GO
EXECUTE sp_addextendedproperty @name=N'PlanGuideGroup', @value = N'MyTest',
@level0type = N'Plan Guide', @level0name = 'TemplateGuide1';
Procedure
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
Se debe usar SCHEMA en lugar de USER. Vea "Esquema frente a usuario" más adelante en este tema. |
1 |
PROCEDURE |
ALTER en OBJECT de procedimiento
Nota
Solo los miembros del rol fijo de servidor sysadmin pueden agregar propiedades extendidas a procedimientos almacenados extendidos.
|
Cualquiera en OBJECT |
Se aplica a los siguientes procedimientos almacenados definidos por el usuario:
Si no se especifica un tipo de nivel 2, la propiedad se aplica al procedimiento en sí mismo. |
2 |
PARAMETER |
ALTER en OBJECT de procedimiento |
Cualquiera en OBJECT |
|
Queue (Service Broker)
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
Se debe usar SCHEMA en lugar de USER. Vea "Esquema frente a usuario" más adelante en este tema. |
1 |
QUEUE |
ALTER en OBJECT de cola |
Cualquiera en OBJECT |
|
2 |
EVENT NOTIFICATION |
ALTER en OBJECT de cola |
Propietario de la notificación de eventos o bien CONTROL, ALTER, TAKE OWNERSHIP o VIEW DEFINITION en la cola O bien ALTER ANY DATABASE EVENT NOTIFICATION |
La notificación de eventos puede tener un propietario individual de la cola. |
Remote Service Binding (Service Broker)
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
REMOTE SERVICE BINDING |
ALTER en REMOTE SERVICE BINDING |
ANY en REMOTE SERVICE BINDING |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Route (Service Broker)
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
ROUTE |
ALTER en REMOTE SERVICE BINDING |
Cualquiera en ROUTE |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Rule
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
|
1 |
RULE |
ALTER en SCHEMA |
HAS_DBACCESS = 1 |
Se incluye para mantener la compatibilidad con versiones anteriores. Para obtener más información, vea Características desusadas del motor de base de datos de SQL Server 2008 R2. |
2 |
Ninguno |
|
|
|
Schema o User
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
ALTER en SCHEMA o bien ALTER en USER |
Cualquiera en APPLICATION ROLE O bien Cualquiera en ROLE O bien Cualquiera en USER |
Si no se especifica un tipo de nivel 1, la propiedad se aplica al esquema o al usuario en sí mismo. USER puede ser uno de los siguientes:
USER solo se debe usar cuando agrega una propiedad extendida a un usuario.
Importante
USER como tipo de nivel 0 definido en objetos de tipo de nivel 1 ó 2 desaparecerá en futuras versiones de SQL Server. Evite usar esta característica en los nuevos trabajos de desarrollo y piense cómo modificar las aplicaciones que la usan actualmente. En su lugar, utilice SCHEMA como tipo de nivel 0. Vea "Esquema frente a usuario" más adelante en este tema.
|
1 |
Varía |
|
|
|
2 |
Varía |
|
|
|
Ejemplo
En el ejemplo siguiente se agrega una propiedad extendida al esquema HumanResources.
USE AdventureWorks2008R2;
GO
EXECUTE sys.sp_addextendedproperty
@name = N'MS_Description',
@value = N'Contains objects related to employees and departments.',
@level0type = N'SCHEMA',
@level0name = HumanResources;
En el ejemplo siguiente se crea un rol de aplicación y se agrega una propiedad extendida al rol.
USE AdventureWorks2008R2;
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 = N'USER',
@level0name = N'Buyers';
Servicio
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
SERVICE |
ALTER en SERVICE |
ALTER en SERVICE O bien CONTROL en SERVICE O bien TAKE OWNERSHIP en SERVICE O bien VIEW DEFINITION en SERVICE |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Clave simétrica
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o eliminar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
---|---|---|---|
0 |
SYMMETRIC KEY |
ALTER en CERTIFICATE |
Cualquiera en KEY |
1 |
Ninguno |
|
|
2 |
Ninguno |
|
|
Synonym
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
Se debe usar SCHEMA en lugar de USER. Vea "Esquema frente a usuario" más adelante en este tema. |
1 |
SYNONYM |
CONTROL en SYNONYM |
Cualquiera en OBJECT |
|
2 |
Ninguno |
|
|
|
Table
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
Se debe usar SCHEMA en lugar de USER. Vea "Esquema frente a usuario" más adelante en este tema. |
1 |
TABLE |
ALTER en OBJECT de tabla |
Cualquiera en COLUMN O bien Cualquiera en OBJECT |
Se aplica a las tablas definidas por el usuario. Si no se especifica un tipo de nivel 2, la propiedad se aplica a la tabla en sí misma. |
2 |
COLUMN |
ALTER en OBJECT de tabla |
Cualquiera en COLUMN O bien Cualquiera en OBJECT |
|
2 |
CONSTRAINT |
ALTER en OBJECT de tabla |
ALTER en OBJECT O bien CONTROL en OBJECT O bien TAKE OWNERSHIP en OBJECT O bien VIEW DEFINITION en OBJECT |
Se aplica a las siguientes restricciones:
|
2 |
INDEX |
ALTER en OBJECT de tabla |
Cualquiera en COLUMN O bien Cualquiera en OBJECT |
Se aplica a índices relacionales y XML. |
2 |
TRIGGER |
ALTER en OBJECT de tabla |
ALTER en OBJECT O bien CONTROL en OBJECT O bien TAKE OWNERSHIP en OBJECT O bien VIEW DEFINITION en OBJECT |
Se aplica a los siguientes desencadenadores DML:
No se aplica a los desencadenadores DDL. |
Ejemplo
En el siguiente ejemplo, se agrega una propiedad extendida a la tabla Address del esquema Person.
USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_Description',
@value = N'Street address information for customers, employees, and vendors.',
@level0type = N'SCHEMA', @level0name = Person,
@level1type = N'TABLE', @level1name = Address;
GO
En el siguiente ejemplo, se agrega una propiedad extendida al índice IX_Address_StateProviceID de la tabla Address del esquema Person.
USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Nonclustered index on StateProvinceID.',
@level0type = N'SCHEMA', @level0name = Person,
@level1type = N'TABLE', @level1name = Address,
@level2type = N'INDEX', @level2name = IX_Address_StateProvinceID;
GO
Trigger
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
TRIGGER |
ALTER ANY TRIGGER en DATABASE |
ALTER ANY TRIGGER en DATABASE |
Solo se aplica a los desencadenadores DDL. |
1 |
Ninguno |
|
|
|
2 |
Ninguno |
|
|
|
Tipo
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
TYPE |
CONTROL en TYPE |
Cualquiera en TYPE |
Se aplica a los tipos definidos por el usuario creados en versiones anteriores de SQL Server. Se incluye para mantener la compatibilidad con versiones anteriores. Para obtener más información, vea Características desusadas del motor de base de datos de SQL Server 2008 R2. |
1 |
Ninguno |
|
|
|
2 |
Ninguno |
|
|
|
Type
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
Se debe usar SCHEMA en lugar de USER. Vea "Esquema frente a usuario" más adelante en este tema. |
1 |
TYPE |
CONTROL en TYPE |
Cualquiera en TYPE |
|
2 |
Ninguno |
|
|
|
View
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
Se debe usar SCHEMA en lugar de USER. Vea "Esquema frente a usuario" más adelante en este tema. |
1 |
VIEW |
ALTER en OBJECT de vista |
Cualquiera en COLUMN O bien Cualquiera en OBJECT |
Se aplica a las vistas definidas por el usuario. Si no se especifica un tipo de nivel 2, la propiedad se aplica a la vista en sí misma. |
2 |
COLUMN |
ALTER en OBJECT de vista |
Cualquiera en COLUMN O bien Cualquiera en OBJECT |
|
2 |
INDEX |
ALTER en OBJECT de vista |
Cualquiera en COLUMN O bien Cualquiera en OBJECT |
Se aplica a índices relacionales y XML. |
2 |
TRIGGER |
ALTER en OBJECT de vista |
ALTER ANY TRIGGER en DATABASE O bien ALTER en OBJECT O bien CONTROL en OBJECT O bien TAKE OWNERSHIP en OBJECT O bien VIEW DEFINITION en OBJECT |
Se aplica a los siguientes desencadenadores DML:
No se aplica a los desencadenadores DDL. |
XML Schema Collection
Nivel |
Tipo de nivel |
Permisos requeridos para agregar o quitar una propiedad extendida |
Permisos requeridos para ver una propiedad extendida |
Comentarios |
---|---|---|---|---|
0 |
SCHEMA o USER |
|
|
Se debe usar SCHEMA en lugar de USER. Vea "Esquema frente a usuario" más adelante en este tema. |
1 |
XML SCHEMA COLLECTION |
ALTER en XML SCHEMA COLLECTION |
ALTER en XML SCHEMA COLLECTION O bien CONTROL en XML SCHEMA COLLECTION O bien REFERENCES en XML SCHEMA COLLECTION O bien TAKE OWNERSHIP en XML SCHEMA COLLECTION O bien VIEW DEFINITION en XML SCHEMA COLLECTION |
No es posible agregar propiedades extendidas a un espacio de nombres XML. |
2 |
Ninguno |
|
|
|
Objetos que carecen de compatibilidad para propiedades extendidas
No se pueden definir propiedades extendidas en los siguientes objetos:
Objetos que pertenecen al ámbito de la base de datos que no se hayan mencionado en las tablas anteriores. Entre ellos se incluyen los objetos de texto completo.
Objetos que no pertenecen al ámbito de la base de datos, como los extremos HTTP.
Objetos sin nombre como los parámetros de las funciones de la partición.
Certificados, claves simétricas, claves asimétricas y credenciales.
Objetos definidos del sistema como tablas del sistema, vistas de catálogos y procedimientos almacenados del sistema.
Esquema frente a usuario
En versiones anteriores de SQL Server, los usuarios eran propietarios de objetos de base de datos, como tablas, vistas y desencadenadores. Por lo tanto, se permitía agregar una propiedad extendida a uno de estos objetos y especificar un nombre de usuario como tipo de nivel 0. Los objetos de la base de datos conforman ahora esquemas independientes de los usuarios que los poseen.
Si especifica USER como tipo de nivel 0 al aplicar una propiedad extendida a un objeto de base de datos, puede producirse una ambigüedad en la resolución de nombres. Supongamos, por ejemplo, que el usuario Mary posee dos esquemas, Mary y MySchema, y que ambos contienen una tabla denominada MyTable. Si Mary agrega una propiedad extendida a la tabla MyTable y especifica @level0type = N'USER', @level0name = Mary, no queda claro a qué tabla se aplica la propiedad extendida. Por compatibilidad con versiones anteriores, SQL Server aplicará la propiedad a la tabla contenida en el esquema Mary. Para obtener más información acerca de usuarios y esquemas, vea Separación de esquemas de usuario.
Utilizar máscaras de entrada frente a las restricciones CHECK
Tanto las restricciones CHECK como las propiedades extendidas que proporcionan una máscara de entrada se pueden utilizar para especificar un patrón de fechas esperadas para las columnas de la tabla y de la vista. La mayoría de los sitios eligen unas o las otras, a menos que se cumpla una de las siguientes situaciones:
Las restricciones CHECK se utilicen como medida provisional hasta que todos los programas que emplean esta tabla puedan usar las propiedades de máscara de entrada.
El sitio también admita usuarios que puedan actualizar los datos mediante herramientas ad hoc que no lean las propiedades extendidas.
La ventaja que presenta la máscara de entrada sobre la restricción CHECK es que la lógica se aplica en las aplicaciones. Éstas pueden generar una mayor cantidad de errores informativos si un usuario proporciona datos con el formato incorrecto. La desventaja de la máscara de entrada es que requiere una llamada independiente a fn_listextendedproperty o a sys.extended_properties para obtener la propiedad, y que la lógica para exigir la máscara debe agregarse en todos los programas.
Replicar 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 la réplica de objetos de base de datos, vea Publicar datos y objetos de base de datos.
Utilizar propiedades extendidas en las aplicaciones
Las propiedades extendidas solo proporcionan una ubicación con nombre para almacenar los datos. Todas las aplicaciones deben codificarse para consultar la propiedad y llevar a cabo la acción apropiada. Por ejemplo, la acción de agregar una propiedad de título a una columna no crea un título que la aplicación pueda mostrar. Toda aplicación debe estar codificada para poder leer el título y mostrarlo correctamente.
Para agregar una propiedad extendida
Para actualizar una propiedad extendida
Para eliminar una propiedad extendida
Para ver una propiedad extendida
Vea también