Compartir a través de


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:

  • Escalar de CLR

  • Con valor de tabla de CLR

  • Escalar de Transact-SQL

  • Con valor de tabla insertado de Transact-SQL

  • Con valor de tabla de Transact-SQL

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

NotaNota
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:

  • CLR

  • Transact-SQL

  • Filtro de replicación

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:

  • Rol de aplicación

  • Rol de base de datos

  • Usuario de SQL Server

  • Grupo de Windows

  • Usuario de Windows

USER solo se debe usar cuando agrega una propiedad extendida a un usuario.

Nota importanteImportante
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:

  • CHECK

  • DEFAULT

  • FOREIGN KEY

  • PRIMARY KEY

  • UNIQUE

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:

  • CLR

  • Transact-SQL

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:

  • CLR

  • Transact-SQL

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