OBJECTPROPERTYEX (Transact-SQL)

Actualizado: 12 de diciembre de 2006

Devuelve información acerca de los objetos del ámbito de esquema de la base de datos actual. Para obtener una lista de estos objetos, vea sys.objects (Transact-SQL). OBJECTPROPERTYEX no se puede utilizar con los objetos que no pertenecen al ámbito de esquema, como los desencadenadores de lenguaje de definición de datos (DDL) y las notificaciones de eventos.

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

Sintaxis

OBJECTPROPERTYEX ( id , property )

Argumentos

  • id
    Es una expresión que representa el Id. del objeto de la base de datos actual. id es de tipo int y se supone que es un objeto del ámbito de esquema del contexto de la base de datos actual.
  • property
    Es una expresión que contiene la información sobre el objeto especificado por id que se va a devolver. El tipo devuelto es sql_variant. En la siguiente tabla se muestra el tipo de datos base de cada valor de propiedad.

    [!NOTA] A menos que se especifique lo contrario, se devuelve NULL si property no es un nombre de propiedad válido, id no es un Id. de objeto válido, id es un tipo de objeto incompatible con el valor especificado en property o el autor de la llamada no tiene permiso para ver los metadatos del objeto.

    Nombre de la propiedad

Tipos de valor devueltos

sql_variant

Excepciones

Devuelve NULL si se produce un error o si el autor de la llamada no tiene permiso para ver el objeto.

En SQL Server 2005, un usuario sólo puede ver los metadatos de asegurables que posea o para los que se le haya concedido permiso. Esto significa que las funciones integradas de emisión de metadatos, como OBJECTPROPERTYEX, pueden devolver NULL si el usuario no tiene ningún permiso para el objeto. Para obtener más información, vea Configuración de visibilidad de los metadatos y Solucionar problemas de visibilidad de los metadatos.

Notas

Database Engine (Motor de base de datos) presupone que object_id se encuentra en el contexto de la base de datos actual. Una consulta que hace referencia a un parámetro object_id de otra base de datos devuelve NULL o resultados incorrectos. Por ejemplo, en la siguiente consulta, el contexto de base de datos es la base de datos master. Database Engine (Motor de base de datos) intentará devolver el valor de propiedad correspondiente al object_id especificado en esa base de datos, en lugar de la base de datos especificada en la consulta. La consulta devuelve resultados incorrectos porque la vista vEmployee no se encuentra en la base de datos master.

USE master;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO

OBJECTPROPERTYEX(view_id**,'IsIndexable'**) puede consumir importantes recursos del equipo porque la evaluación de la propiedad IsIndexable requiere el análisis de la definición de la vista, la normalización y la optimización parcial. Aunque la propiedad IsIndexable identifica tablas o vistas que se pueden indizar, es posible que se produzca un error en la creación real del índice si no se cumplen ciertos requisitos de clave de índice. Para obtener más información, vea CREATE INDEX (Transact-SQL).

OBJECTPROPERTYEX (table_id**,'TableHasActiveFulltextIndex'**) devolverá el valor 1 (verdadero) si se agrega al menos una columna de una tabla para su indización. El índice de texto se activa para su llenado en el momento en que se agrega la primera columna para la indización.

Se aplican restricciones sobre la visibilidad de los metadatos al conjunto de resultados. Para obtener más información, vea Configuración de visibilidad de los metadatos.

Ejemplos

A. Buscar el tipo base de un objeto

En el siguiente ejemplo se crea un sinónimo MyEmployeeTable para la tabla Employee de la base de datos AdventureWorks y, a continuación, se devuelve el tipo base del sinónimo.

USE AdventureWorks;
GO
CREATE SYNONYM MyEmployeeTable FOR HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX ( object_id(N'MyEmployeeTable'), N'BaseType')AS [Base Type];
GO

El conjunto de resultados muestra que el tipo base del objeto subyacente, la tabla Employee, es una tabla de usuario.

Base Type 
-------- 
U 

B. Devolver un valor de propiedad

En el siguiente ejemplo se devuelve el número de desencadenadores UPDATE de la tabla especificada.

USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'HumanResources.Employee'), N'TABLEUPDATETRIGGERCOUNT');
GO

C. Buscar tablas que tengan una restricción FOREIGN KEY

En el ejemplo siguiente se utiliza la propiedad TableHasForeignKey para devolver todas las tablas que tengan una restricción FOREIGN KEY.

USE AdventureWorks;
GO
SELECT name, object_id, schema_id, type_desc
FROM sys.objects 
WHERE OBJECTPROPERTYEX(object_id, N'TableHasForeignKey') = 1
ORDER BY name;
GO

Vea también

Referencia

CREATE SYNONYM (Transact-SQL)
Funciones de metadatos (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)
OBJECT_NAME (Transact-SQL)
sys.objects (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)

Otros recursos

Separación de esquemas de usuario

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido nuevo:
  • Se ha agregado la propiedad TableHasVarDecimalStorageFormat, disponible en el Service Pack 2.

17 de julio de 2006

Contenido nuevo:
  • Se ha agregado la sección Excepciones.

5 de diciembre de 2005

Contenido modificado:
  • Se ha corregido la definición de las propiedades IsTableFunction e IsScalarFunction.
  • Se ha modificado el ejemplo C.