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.
Convenciones 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 |
|
17 de julio de 2006 |
|
5 de diciembre de 2005 |
|