OBJECTPROPERTYEX (Transact-SQL)
Devuelve información acerca de los objetos de á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.
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 el identificador 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 identificador 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
Tipo de objeto
Descripción y valores devueltos
BaseType
Cualquier objeto en el ámbito de esquema
Identifica el tipo base del objeto. Cuando el objeto especificado es un sinónimo, se devuelve el tipo base del objeto subyacente.
NonNULL = Tipo de objeto
Tipo de datos base: char(2)
CnstIsClustKey
Restricción
Restricción PRIMARY KEY con un índice clúster.
1 = True
0 = False
Tipo de datos base: int
CnstIsColumn
Restricción
Restricción CHECK, DEFAULT o FOREIGN KEY en una única columna.
1 = True
0 = False
Tipo de datos base: int
CnstIsDeleteCascade
Restricción
Restricción FOREIGN KEY con la opción ON DELETE CASCADE.
1 = True
0 = False
Tipo de datos base: int
CnstIsDisabled
Restricción
Restricción deshabilitada.
1 = True
0 = False
Tipo de datos base: int
CnstIsNonclustKey
Restricción
Restricción PRIMARY KEY con un índice no clúster.
1 = True
0 = False
Tipo de datos base: int
CnstIsNotRepl
Restricción
La restricción se define mediante las palabras clave NOT FOR REPLICATION.
1 = True
0 = False
Tipo de datos base: int
CnstIsNotTrusted
Restricción
La restricción se ha habilitado sin comprobar las filas existentes. Por lo tanto, es posible que no pueda mantenerse para todas las filas.
1 = True
0 = False
Tipo de datos base: int
CnstIsUpdateCascade
Restricción
Restricción FOREIGN KEY con la opción ON UPDATE CASCADE.
1 = True
0 = False
Tipo de datos base: int
ExecIsAfterTrigger
Desencadenador
Desencadenador AFTER.
1 = True
0 = False
Tipo de datos base: int
ExecIsAnsiNullsOn
Función de Transact-SQL, procedimiento de Transact-SQL, desencadenador de Transact-SQL, vista
El valor de ANSI_NULLS en el momento de creación.
1 = True
0 = False
Tipo de datos base: int
ExecIsDeleteTrigger
Desencadenador
Desencadenador DELETE.
1 = True
0 = False
Tipo de datos base: int
ExecIsFirstDeleteTrigger
Desencadenador
El primer desencadenador que se activa cuando se ejecuta DELETE en la tabla.
1 = True
0 = False
Tipo de datos base: int
ExecIsFirstInsertTrigger
Desencadenador
El primer desencadenador que se activa cuando se ejecuta INSERT en la tabla.
1 = True
0 = False
Tipo de datos base: int
ExecIsFirstUpdateTrigger
Desencadenador
El primer desencadenador que se activa cuando se ejecuta UPDATE en la tabla.
1 = True
0 = False
Tipo de datos base: int
ExecIsInsertTrigger
Desencadenador
Desencadenador INSERT.
1 = True
0 = False
Tipo de datos base: int
ExecIsInsteadOfTrigger
Desencadenador
Desencadenador INSTEAD OF.
1 = True
0 = False
Tipo de datos base: int
ExecIsLastDeleteTrigger
Desencadenador
Último desencadenador que se activa cuando se ejecuta DELETE en la tabla.
1 = True
0 = False
Tipo de datos base: int
ExecIsLastInsertTrigger
Desencadenador
Último desencadenador que se activa cuando se ejecuta INSERT en la tabla.
1 = True
0 = False
Tipo de datos base: int
ExecIsLastUpdateTrigger
Desencadenador
Último desencadenador que se activa cuando se ejecuta UPDATE en la tabla.
1 = True
0 = False
Tipo de datos base: int
ExecIsQuotedIdentOn
Función de Transact-SQL, procedimiento de Transact-SQL, desencadenador de Transact-SQL, vista
Valor de QUOTED_IDENTIFIER en el momento de creación.
1 = True
0 = False
Tipo de datos base: int
ExecIsStartup
Procedimiento
Procedimiento de inicio.
1 = True
0 = False
Tipo de datos base: int
ExecIsTriggerDisabled
Desencadenador
Desencadenador deshabilitado.
1 = True
0 = False
Tipo de datos base: int
ExecIsTriggerNotForRepl
Desencadenador
Desencadenador definido como NOT FOR REPLICATION.
1 = True
0 = False
Tipo de datos base: int
ExecIsUpdateTrigger
Desencadenador
Desencadenador UPDATE.
1 = True
0 = False
Tipo de datos base: int
HasAfterTrigger
Tabla, vista
La tabla o la vista tiene un desencadenador AFTER.
1 = True
0 = False
Tipo de datos base: int
HasDeleteTrigger
Tabla, vista
La tabla o la vista tiene un desencadenador DELETE.
1 = True
0 = False
Tipo de datos base: int
HasInsertTrigger
Tabla, vista
La tabla o la vista tiene un desencadenador INSERT.
1 = True
0 = False
Tipo de datos base: int
HasInsteadOfTrigger
Tabla, vista
La tabla o la vista tiene un desencadenador INSTEAD OF.
1 = True
0 = False
Tipo de datos base: int
HasUpdateTrigger
Tabla, vista
La tabla o la vista tiene un desencadenador UPDATE.
1 = True
0 = False
Tipo de datos base: int
IsAnsiNullsOn
Función de Transact-SQL, procedimiento de Transact-SQL, tabla, desencadenador de Transact-SQL, vista
Especifica que el valor de la opción ANSI NULLS para la tabla es ON, lo que significa que todas las comparaciones con un valor NULL se evalúan como UNKNOWN. Este valor se aplica a todas las expresiones de la definición de tabla, incluidas las columnas calculadas y las restricciones, mientras la tabla exista.
1 = True
0 = False
Tipo de datos base: int
IsCheckCnst
Cualquier objeto en el ámbito de esquema
Restricción CHECK.
1 = True
0 = False
Tipo de datos base: int
IsConstraint
Cualquier objeto en el ámbito de esquema
Restricción.
1 = True
0 = False
Tipo de datos base: int
IsDefault
Cualquier objeto en el ámbito de esquema
Enlace predeterminado.
1 = True
0 = False
Tipo de datos base: int
IsDefaultCnst
Cualquier objeto en el ámbito de esquema
Restricción DEFAULT.
1 = True
0 = False
Tipo de datos base: int
IsDeterministic
Funciones escalares y con valores de tabla, vista
Propiedad de determinismo de la función o vista.
1 = Determinista
0 = No determinista
Tipo de datos base: int
IsEncrypted
Función de Transact-SQL, procedimiento de Transact-SQL, tabla, desencadenador de Transact-SQL, vista
Indica que el texto original de la instrucción del módulo se ha convertido a un formato protegido. La salida de la protección no es directamente visible en ninguna de las vistas de catálogo de SQL Server 2005. Los usuarios que no disponen de acceso a las tablas del sistema o a los archivos de base de datos no pueden recuperar el texto confuso. Sin embargo, está disponible para los usuarios que puedan obtener acceso a las tablas del sistema a través del puerto DAC o directamente a los archivos de base de datos. Además, los usuarios que pueden adjuntar un depurador al proceso del servidor pueden recuperar el procedimiento original de la memoria en tiempo de ejecución.
1 = Cifrado
0 = No cifrado
Tipo de datos base: int
IsExecuted
Cualquier objeto en el ámbito de esquema
Especifica que el objeto se puede ejecutar (vista, procedimiento, función o desencadenador).
1 = True
0 = False
Tipo de datos base: int
IsExtendedProc
Cualquier objeto en el ámbito de esquema
Procedimiento extendido.
1 = True
0 = False
Tipo de datos base: int
IsForeignKey
Cualquier objeto en el ámbito de esquema
Restricción FOREIGN KEY.
1 = True
0 = False
Tipo de datos base: int
IsIndexed
Tabla, vista
Una tabla o vista con un índice.
1 = True
0 = False
Tipo de datos base: int
IsIndexable
Tabla, vista
Una tabla o una vista en la que es posible crear un índice.
1 = True
0 = False
Tipo de datos base: int
IsInlineFunction
Función
Función insertada.
1 = Función insertada
0 = Función no insertada
Tipo de datos base: int
IsMSShipped
Cualquier objeto en el ámbito de esquema
Objeto creado durante la instalación de SQL Server.
1 = True
0 = False
Tipo de datos base: int
IsPrecise
Columna calculada, función, tipo definido por el usuario, vista
Indica si el objeto contiene un cálculo impreciso, como una operación de coma flotante.
1 = Preciso
0 = Impreciso
Tipo de datos base: int
IsPrimaryKey
Cualquier objeto en el ámbito de esquema
Restricción PRIMARY KEY.
1 = True
0 = False
Tipo de datos base: int
IsProcedure
Cualquier objeto en el ámbito de esquema
Procedimiento.
1 = True
0 = False
Tipo de datos base: int
IsQuotedIdentOn
Restricción CHECK, definición DEFAULT, función de Transact-SQL, procedimiento de Transact-SQL, tabla, desencadenador de Transact-SQL, vista
Especifica que el valor del identificador entrecomillado para el objeto es ON, lo que significa que las comillas dobles delimitan los identificadores en todas las expresiones de la definición de objeto.
1 = True
0 = False
Tipo de datos base: int
IsQueue
Cualquier objeto en el ámbito de esquema
Cola de Service Broker
1 = True
0 = False
Tipo de datos base: int
IsReplProc
Cualquier objeto en el ámbito de esquema
Procedimiento de replicación.
1 = True
0 = False
Tipo de datos base: int
IsRule
Cualquier objeto en el ámbito de esquema
Regla enlazada.
1 = True
0 = False
Tipo de datos base: int
IsScalarFunction
Función
Función escalar.
1 = Función escalar
0 = Función no escalar
Tipo de datos base: int
IsSchemaBound
Función, vista
Función o vista enlazada al esquema creada mediante SCHEMABINDING.
1 = Enlazada a un esquema
0 = No enlazada al esquema
Tipo de datos base: int
IsSystemTable
Tabla
Tabla del sistema.
1 = True
0 = False
Tipo de datos base: int
IsSystemVerified
Columna calculada, función, tipo definido por el usuario, vista
SQL Server puede comprobar las propiedades de precisión y determinismo del objeto.
1 = True
0 = False
Tipo de datos base: int
IsTable
Tabla
Tabla.
1 = True
0 = False
Tipo de datos base: int
IsTableFunction
Función
Función con valores de tabla.
1 = Función con valores de tabla.
0 = Función con valores no de tabla.
Tipo de datos base: int
IsTrigger
Cualquier objeto en el ámbito de esquema
Desencadenador.
1 = True
0 = False
Tipo de datos base: int
IsUniqueCnst
Cualquier objeto en el ámbito de esquema
Restricción UNIQUE.
1 = True
0 = False
Tipo de datos base: int
IsUserTable
Tabla
Tabla definida por el usuario.
1 = True
0 = False
Tipo de datos base: int
IsView
Vista
Vista.
1 = True
0 = False
Tipo de datos base: int
OwnerId
Cualquier objeto en el ámbito de esquema
Propietario del objeto.
NotaEl propietario del esquema no es necesariamente el propietario del objeto. Por ejemplo, los objetos secundarios (aquéllos en los que parent_object_id no es NULL) siempre devolverán el mismo id. de propietario que el primario.NonNULL = Id. de usuario de la base de datos del propietario del objeto.
NULL = Tipo de objeto no compatible o Id. de objeto no válido.
Tipo de datos base: int
SchemaId
Cualquier objeto en el ámbito de esquema
Id. del esquema asociado al objeto.
NonNULL = Id. de esquema del objeto.
Tipo de datos base: int
SystemDataAccess
Función, vista
El objeto obtiene acceso a los datos del sistema, los catálogos del sistema o las tablas virtuales del sistema en la instancia local de SQL Server.
0 = Ninguno
1 = Lectura
Tipo de datos base: int
TableDeleteTrigger
Tabla
La tabla tiene un desencadenador DELETE.
>1 = Id. del primer desencadenador con el tipo especificado.
Tipo de datos base: int
TableDeleteTriggerCount
Tabla
La tabla tiene el número especificado de desencadenadores DELETE.
NonNULL = Número de desencadenadores DELETE
Tipo de datos base: int
TableFullTextMergeStatus
Tabla
Si una tabla que tiene un índice de texto completo se está combinando actualmente.
0 = La tabla no tiene un índice de texto completo o el índice no se está combinando.
1 = El índice de texto completo se está combinando.
TableFullTextBackgroundUpdateIndexOn
Tabla
La tabla tiene habilitado el índice de actualización de texto completo en segundo plano (seguimiento de cambios automáticos).
1 = True
0 = False
Tipo de datos base: int
TableFulltextCatalogId
Tabla
Id. del catálogo de texto completo en el que residen los datos de índice de texto completo para la tabla.
Distinto de cero = Id. del catálogo de texto completo, asociado al índice único que identifica las filas en una tabla indizada de texto completo.
0 = La tabla no tiene un índice de texto completo.
Tipo de datos base: int
TableFullTextChangeTrackingOn
Tabla
La tabla tiene habilitado el seguimiento de cambios de texto completo.
1 = True
0 = False
Tipo de datos base: int
TableFulltextDocsProcessed
Tabla
Número de filas procesadas desde el comienzo de la indización de texto completo. En una tabla que se esté indizando para búsquedas de texto completo, todas las columnas de una fila se consideran parte de un documento que se va a indizar.
0 = No se ha completado ningún rastreo activo ni ninguna indización de texto completo.
> 0 = Uno de los siguientes:
El número de documentos procesados por operaciones de inserción o actualización desde el inicio del rellenado de seguimiento de cambios completo, incremental o manual.
El número de filas procesadas por operaciones de inserción o actualización desde que se habilitó el seguimiento de cambios con el rellenado del índice de actualización en segundo plano, la modificación del esquema de índice de texto completo, la regeneración del catálogo de texto completo o el reinicio de la instancia de SQL Server, etc.
NULL = La tabla no tiene un índice de texto completo.
Tipo de datos base: int
Nota: esta propiedad no supervisa ni cuenta las filas eliminadas.
TableFulltextFailCount
Tabla
El número de filas que no ha indizado la búsqueda de texto completo.
0 = El llenado ha finalizado.
>0 = Uno de los siguientes:
El número de documentos que no se han indizado desde el inicio del llenado de seguimiento de cambios de actualización completa, incremental o manual.
Para el seguimiento de cambios con el índice de actualización en segundo plano, el número de filas que no se han indizado desde el inicio del llenado o el reinicio del llenado. Esto puede deberse, por ejemplo, a un cambio del esquema, a la regeneración del catálogo o al reinicio del servidor.
NULL = La tabla no tiene un índice de texto completo.
Tipo de datos base: int
TableFulltextItemCount
Tabla
NonNULL = El número de filas que se han indizado por texto completo correctamente.
NULL = La tabla no tiene un índice de texto completo.
Tipo de datos base: int
TableFulltextKeyColumn
Tabla
Id. de la columna asociada al índice de columna único que participa en la definición de índice de texto completo.
0 = La tabla no tiene un índice de texto completo.
Tipo de datos base: int
TableFulltextPendingChanges
Tabla
Número de entradas de seguimiento de cambios pendientes de procesamiento.
0 = El seguimiento de cambios no está habilitado.
NULL = La tabla no tiene un índice de texto completo.
Tipo de datos base: int
TableFulltextPopulateStatus
Tabla
0 = Inactivo.
1 = Rellenado completo en curso.
2 = Llenado incremental en curso.
3 = Propagación de los cambios de los que se ha realizado seguimiento en curso.
4 = Actualización de índices en segundo plano en curso, como el seguimiento de cambios automáticos.
5 = Indización de texto completo acelerada o pausada.
Tipo de datos base: int
TableHasActiveFulltextIndex
Tabla
La tabla tiene un índice de texto completo activo.
1 = True
0 = False
Tipo de datos base: int
TableHasCheckCnst
Tabla
La tabla tiene una restricción CHECK.
1 = True
0 = False
Tipo de datos base: int
TableHasClustIndex
Tabla
La tabla tiene un índice clúster.
1 = True
0 = False
Tipo de datos base: int
TableHasDefaultCnst
Tabla
La tabla tiene una restricción DEFAULT.
1 = True
0 = False
Tipo de datos base: int
TableHasDeleteTrigger
Tabla
La tabla tiene un desencadenador DELETE.
1 = True
0 = False
Tipo de datos base: int
TableHasForeignKey
Tabla
La tabla tiene una restricción FOREIGN KEY.
1 = True
0 = False
Tipo de datos base: int
TableHasForeignRef
Tabla
Una restricción FOREIGN KEY hace referencia a la tabla.
1 = True
0 = False
Tipo de datos base: int
TableHasIdentity
Tabla
La tabla tiene una columna de identidad.
1 = True
0 = False
Tipo de datos base: int
TableHasIndex
Tabla
La tabla tiene un índice de cualquier tipo.
1 = True
0 = False
Tipo de datos base: int
TableHasInsertTrigger
Tabla
El objeto tiene un desencadenador INSERT.
1 = True
0 = False
Tipo de datos base: int
TableHasNonclustIndex
Tabla
La tabla tiene un índice no clúster.
1 = True
0 = False
Tipo de datos base: int
TableHasPrimaryKey
Tabla
La tabla tiene una clave principal.
1 = True
0 = False
Tipo de datos base: int
TableHasRowGuidCol
Tabla
La tabla tiene un ROWGUIDCOL para una columna de tipo uniqueidentifier .
1 = True
0 = False
Tipo de datos base: int
TableHasTextImage
Tabla
La tabla tiene una columna de tipo text, ntext o image.
1 = True
0 = False
Tipo de datos base: int
TableHasTimestamp
Tabla
La tabla tiene una columna de tipo timestamp.
1 = True
0 = False
Tipo de datos base: int
TableHasUniqueCnst
Tabla
La tabla tiene una restricción UNIQUE.
1 = True
0 = False
Tipo de datos base: int
TableHasUpdateTrigger
Tabla
El objeto tiene un desencadenador UPDATE.
1 = True
0 = False
Tipo de datos base: int
TableHasVarDecimalStorageFormat
Tabla
La tabla está habilitada para el formato de almacenamiento vardecimal.
1 = True
0 = False
TableInsertTrigger
Tabla
La tabla tiene un desencadenador INSERT.
>1 = Id. del primer desencadenador con el tipo especificado.
Tipo de datos base: int
TableInsertTriggerCount
Tabla
La tabla tiene el número especificado de desencadenadores INSERT.
>0 = Número de desencadenadores INSERT.
Tipo de datos base: int
TableIsFake
Tabla
La tabla no es real. Se materializa internamente a petición del Motor de base de datos.
1 = True
0 = False
Tipo de datos base: int
TableIsLockedOnBulkLoad
Tabla
La tabla está bloqueada debido a un trabajo bcp o BULK INSERT.
1 = True
0 = False
Tipo de datos base: int
TableIsPinned
Tabla
La tabla se ancla para que se mantenga en la caché de datos.
0 = False
Esta característica no es compatible con SQL Server 2005 y versiones posteriores.
TableTextInRowLimit
Tabla
La tabla tiene establecida la opción text in row.
> 0 = Número máximo de bytes permitido para text in row.
0 = La opción text in row no está establecida.
Tipo de datos base: int
TableUpdateTrigger
Tabla
La tabla tiene un desencadenador UPDATE.
>1 = Id. del primer desencadenador con el tipo especificado.
Tipo de datos base: int
TableUpdateTriggerCount
Tabla
La tabla tiene el número especificado de desencadenadores UPDATE.
> 0 = Número de desencadenadores UPDATE.
Tipo de datos base: int
UserDataAccess
Función, vista
Indica que el objeto obtiene acceso a datos y tablas de usuario en la instancia local de SQL Server.
1 = Lectura
0 = Ninguno
Tipo de datos base: int
TableHasColumnSet
Tabla
La tabla tiene un grupo de columnas.
0 = False
1 = True
Para obtener más información, vea Utilizar conjuntos de columnas.
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.
Un usuario sólo puede ver los metadatos de elementos protegibles 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.
Comentarios
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. 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'AdventureWorks2008R2.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 completo 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 AdventureWorks2008R2 y, a continuación, se devuelve el tipo base del sinónimo.
USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
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 AdventureWorks2008R2;
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