OBJECTPROPERTY (Transact-SQL)
Devuelve información acerca de los objetos de ámbito de esquema de la base de datos actual. Para obtener una lista de los objetos de ámbito de esquema, vea sys.objects (Transact-SQL). Esta función no se puede utilizar para objetos que no pertenezcan al ámbito de esquema, como notificaciones de eventos y desencadenadores DDL (lenguaje de definición de datos).
Sintaxis
OBJECTPROPERTY ( 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 representa la información que se devuelve para el objeto especificado en id. property puede tener uno de los valores siguientes.[!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
Tipo de objeto
Descripción y valores devueltos
CnstIsClustKey
Restricción
Restricción PRIMARY KEY con un índice agrupado.
1 = Verdadero
0 = False
CnstIsColumn
Restricción
Restricción CHECK, DEFAULT o FOREIGN KEY en una única columna.
1 = True
0 = False
CnstIsDeleteCascade
Restricción
Restricción FOREIGN KEY con la opción ON DELETE CASCADE.
1 = True
0 = False
CnstIsDisabled
Restricción
Restricción deshabilitada.
1 = True
0 = False
CnstIsNonclustKey
Restricción
Restricción PRIMARY KEY o UNIQUE con un índice no agrupado.
1 = Verdadero
0 = False
CnstIsNotRepl
Restricción
La restricción se ha definido con las palabras clave NOT FOR REPLICATION.
1 = Verdadero
0 = False
CnstIsNotTrusted
Restricción
La restricción se ha habilitado sin comprobar las filas existentes, por lo que es posible que no se mantenga para todas las filas.
1 = True
0 = False
CnstIsUpdateCascade
Restricción
Restricción FOREIGN KEY con la opción ON UPDATE CASCADE.
1 = Verdadero
0 = False
ExecIsAfterTrigger
Desencadenador
Desencadenador AFTER.
1 = Verdadero
0 = False
ExecIsAnsiNullsOn
Función de Transact-SQL, procedimiento de Transact-SQL, desencadenador de Transact-SQL, vista
Valor de ANSI_NULLS en el momento de su creación.
1 = Verdadero
0 = False
ExecIsDeleteTrigger
Desencadenador
Desencadenador DELETE.
1 = Verdadero
0 = False
ExecIsFirstDeleteTrigger
Desencadenador
Primer desencadenador que se activa cuando se ejecuta DELETE en la tabla.
1 = Verdadero
0 = False
ExecIsFirstInsertTrigger
Desencadenador
Primer desencadenador que se activa cuando se ejecuta INSERT en la tabla.
1 = Verdadero
0 = False
ExecIsFirstUpdateTrigger
Desencadenador
Primer desencadenador que se activa cuando se ejecuta UPDATE en la tabla.
1 = Verdadero
0 = False
ExecIsInsertTrigger
Desencadenador
Desencadenador INSERT.
1 = Verdadero
0 = False
ExecIsInsteadOfTrigger
Desencadenador
Desencadenador INSTEAD OF.
1 = Verdadero
0 = False
ExecIsLastDeleteTrigger
Desencadenador
Último desencadenador que se activa cuando se ejecuta DELETE en la tabla.
1 = Verdadero
0 = False
ExecIsLastInsertTrigger
Desencadenador
Último desencadenador que se activa cuando se ejecuta INSERT en la tabla.
1 = Verdadero
0 = False
ExecIsLastUpdateTrigger
Desencadenador
Último desencadenador que se activa cuando se ejecuta UPDATE en la tabla.
1 = Verdadero
0 = False
ExecIsQuotedIdentOn
Función de Transact-SQL, procedimiento de Transact-SQL, desencadenador de Transact-SQL, vista
Valor de QUOTED_IDENTIFIER en el momento de su creación.
1 = Verdadero
0 = False
ExecIsStartup
Procedimiento
Procedimiento de inicio.
1 = Verdadero
0 = False
ExecIsTriggerDisabled
Desencadenador
Desencadenador deshabilitado.
1 = True
0 = False
ExecIsTriggerNotForRepl
Desencadenador
Desencadenador definido como NOT FOR REPLICATION.
1 = True
0 = False
ExecIsUpdateTrigger
Desencadenador
Desencadenador UPDATE.
1 = Verdadero
0 = False
HasAfterTrigger
Tabla, vista
La tabla o la vista tiene un desencadenador AFTER.
1 = Verdadero
0 = False
HasDeleteTrigger
Tabla, vista
La tabla o la vista tiene un desencadenador DELETE.
1 = True
0 = False
HasInsertTrigger
Tabla, vista
La tabla o la vista tiene un desencadenador INSERT.
1 = True
0 = False
HasInsteadOfTrigger
Tabla, vista
La tabla o la vista tiene un desencadenador INSTEAD OF.
1 = True
0 = False
HasUpdateTrigger
Tabla, vista
La tabla o la vista tiene un desencadenador UPDATE.
1 = Verdadero
0 = False
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 de la tabla es ON. Esto 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 la tabla, incluidas las columnas calculadas y las restricciones, mientras la tabla exista.
1 = Verdadero
0 = False
IsCheckCnst
Cualquier objeto en el ámbito de esquema
Restricción CHECK.
1 = True
0 = False
IsConstraint
Cualquier objeto en el ámbito de esquema
Es una restricción CHECK, DEFAULT o FOREIGN KEY de columna única en una columna o tabla.
1 = Verdadero
0 = False
IsDefault
Cualquier objeto en el ámbito de esquema
Valor predeterminado enlazado.
1 = Verdadero
0 = False
IsDefaultCnst
Cualquier objeto en el ámbito de esquema
Restricción DEFAULT.
1 = Verdadero
0 = False
IsDeterministic
Función, vista
Propiedad de determinismo de la función o vista.
1 = Determinista
0 = No determinista
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 protegido. 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
El objeto se puede ejecutar (vista, procedimiento, función o desencadenador).
1 = Verdadero
0 = False
IsExtendedProc
Cualquier objeto en el ámbito de esquema
Procedimiento extendido.
1 = Verdadero
0 = False
IsForeignKey
Cualquier objeto en el ámbito de esquema
Restricción FOREIGN KEY.
1 = Verdadero
0 = False
IsIndexed
Tabla, vista
Tabla o vista que tiene un índice.
1 = Verdadero
0 = False
IsIndexable
Tabla, vista
Tabla o vista en la que es posible crear un índice.
1 = Verdadero
0 = False
IsInlineFunction
Función
Función insertada.
1 = Función insertada
0 = No es una función insertada
IsMSShipped
Cualquier objeto en el ámbito de esquema
Objeto creado durante la instalación de SQL Server.
1 = Verdadero
0 = False
IsPrimaryKey
Cualquier objeto en el ámbito de esquema
Restricción PRIMARY KEY.
1 = Verdadero
0 = False
NULL = No es una función o el Id. de objeto no es válido.
IsProcedure
Cualquier objeto en el ámbito de esquema
Procedimiento.
1 = Verdadero
0 = False
IsQuotedIdentOn
Función de Transact-SQL, procedimiento de Transact-SQL, tabla, desencadenador de Transact-SQL, vista, restricción CHECK, definición DEFAULT
Especifica que el valor del identificador entre comillas para el objeto es ON. Esto significa que los identificadores están delimitados por comillas dobles en todas las expresiones que participan en la definición del objeto.
1 = ON
0 = OFF
IsQueue
Cualquier objeto en el ámbito de esquema
Cola de Service Broker
1 = True
0 = False
IsReplProc
Cualquier objeto en el ámbito de esquema
Procedimiento de replicación.
1 = True
0 = False
IsRule
Cualquier objeto en el ámbito de esquema
Regla enlazada.
1 = Verdadero
0 = False
IsScalarFunction
Función
Función con valores escalares.
1 = Función con valores escalares
0 = Función con valores no escalares
IsSchemaBound
Función, vista
Función o vista enlazada al esquema creada mediante SCHEMABINDING.
1 = Enlazada al esquema.
0 = No enlazada al esquema.
IsSystemTable
Tabla
Tabla del sistema.
1 = Verdadero
0 = False
IsTable
Tabla
Tabla.
1 = Verdadero
0 = False
IsTableFunction
Función
Función con valores de tabla.
1 = Función con valores de tabla.
0 = Función con valores no de tabla.
IsTrigger
Cualquier objeto en el ámbito de esquema
Desencadenador.
1 = Verdadero
0 = False
IsUniqueCnst
Cualquier objeto en el ámbito de esquema
Restricción UNIQUE.
1 = Verdadero
0 = False
IsUserTable
Tabla
Tabla definida por el usuario.
1 = Verdadero
0 = False
IsView
Vista
Vista.
1 = Verdadero
0 = False
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.Distinto de NULL = Id. de usuario de base de datos que corresponde al propietario del objeto.
TableDeleteTrigger
Tabla
La tabla tiene un desencadenador DELETE.
>1 = Id. del primer desencadenador con el tipo especificado.
TableDeleteTriggerCount
Tabla
La tabla tiene el número especificado de desencadenadores DELETE.
>0 = Número de desencadenadores DELETE.
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 habilitada la opción de actualización de índices de texto en segundo plano (seguimiento de cambios automáticos).
1 = Verdadero
0 = FALSE
TableFulltextCatalogId
Tabla
Id. del catálogo de texto en el que residen los datos de índice de texto para la tabla.
Distinto de cero = Id. del catálogo de texto, asociado al índice único que identifica las filas en una tabla indizada de texto.
0 = La tabla no tiene un índice de texto.
TableFulltextChangeTrackingOn
Tabla
La tabla tiene habilitado el seguimiento de cambios de texto.
1 = Verdadero
0 = FALSE
TableFulltextDocsProcessed
Tabla
Número de filas procesadas desde el comienzo de la indización de texto. En una tabla que se indiza para búsquedas de texto, todas las columnas de una fila se consideran como parte de un documento que se va a indizar.
0 = No se realiza ningún rastreo activo ni la indización de texto.
> 0 = Uno de los valores 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.
NotaEsta propiedad no supervisa ni cuenta las filas eliminadas.TableFulltextFailCount
Tabla
Número de filas no indizadas por Búsqueda de texto.
0 = El llenado ha finalizado.
> 0 = Uno de los valores siguientes:
El número de documentos no indizados desde el comienzo del llenado de seguimiento de cambios de actualización completa, incremental o manual.
Para el seguimiento de cambios con actualización de índices en segundo plano, el número de filas no indizadas desde el comienzo del llenado o desde su reinicio. 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.
TableFulltextItemCount
Tabla
Número de filas para las que se crearon índices de texto correctamente.
TableFulltextKeyColumn
Tabla
Id. de la columna asociada al índice único de una sola columna que participa en la definición del índice de texto.
0 = La tabla no tiene un índice de texto.
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.
TableFulltextPopulateStatus
Tabla
0 = Inactiva.
1 = Llenado completo en curso.
2 = Llenado incremental en curso.
3 = Propagación de cambios de 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 acelerada o pausada.
TableHasActiveFulltextIndex
Tabla
La tabla tiene un índice de texto activo.
1 = Verdadero
0 = False
TableHasCheckCnst
Tabla
La tabla tiene una restricción CHECK.
1 = Verdadero
0 = False
TableHasClustIndex
Tabla
La tabla tiene un índice agrupado.
1 = Verdadero
0 = False
TableHasDefaultCnst
Tabla
La tabla tiene una restricción DEFAULT.
1 = Verdadero
0 = False
TableHasDeleteTrigger
Tabla
La tabla tiene un desencadenador DELETE.
1 = Verdadero
0 = False
TableHasForeignKey
Tabla
La tabla tiene una restricción FOREIGN KEY.
1 = Verdadero
0 = False
TableHasForeignRef
Tabla
Una restricción FOREIGN KEY hace referencia a la tabla.
1 = Verdadero
0 = False
TableHasIdentity
Tabla
La tabla tiene una columna de identidad.
1 = Verdadero
0 = False
TableHasIndex
Tabla
La tabla tiene un índice de cualquier tipo.
1 = True
0 = False
TableHasInsertTrigger
Tabla
El objeto tiene un desencadenador INSERT.
1 = Verdadero
0 = Falso
TableHasNonclustIndex
Tabla
La tabla tiene un índice no agrupado.
1 = True
0 = False
TableHasPrimaryKey
Tabla
La tabla tiene una clave principal.
1 = True
0 = False
TableHasRowGuidCol
Tabla
La tabla tiene una propiedad ROWGUIDCOL para una columna de tipo uniqueidentifier.
1 = Verdadero
0 = False
TableHasTextImage
Tabla
La tabla tiene una columna de tipo text, ntext o image.
1 = Verdadero
0 = False
TableHasTimestamp
Tabla
La tabla tiene una columna de tipo timestamp.
1 = Verdadero
0 = False
TableHasUniqueCnst
Tabla
La tabla tiene una restricción UNIQUE.
1 = Verdadero
0 = False
TableHasUpdateTrigger
Tabla
El objeto tiene un desencadenador UPDATE.
1 = Verdadero
0 = False
TableHasVarDecimalStorageFormat
Tabla
La tabla está habilitada para el formato de almacenamiento vardecimal.
1 = Verdadero
0 = Falso
TableInsertTrigger
Tabla
La tabla tiene un desencadenador INSERT.
>1 = Id. del primer desencadenador con el tipo especificado.
TableInsertTriggerCount
Tabla
La tabla tiene el número especificado de desencadenadores INSERT.
>0 = Número de desencadenadores INSERT.
TableIsFake
Tabla
La tabla no es real. Se materializa internamente a petición del SQL Server Database Engine (Motor de base de datos de SQL Server).
1 = Verdadero
0 = Falso
TableIsLockedOnBulkLoad
Tabla
La tabla está bloqueada debido a una operación con bcp o BULK INSERT.
1 = True
0 = False
TableIsPinned
Tabla
La tabla se fija 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
Número máximo de bytes permitidos para text in row.
0 si no se ha establecido la opción text in row.
TableUpdateTrigger
Tabla
La tabla tiene un desencadenador UPDATE.
>1 = Id. del primer desencadenador con el tipo especificado.
TableUpdateTriggerCount
Tabla
La tabla tiene el número especificado de desencadenadores UPDATE.
> 0 = Número de desencadenadores UPDATE.
TableHasColumnSet
Tabla
La tabla tiene un grupo de columnas.
0 = Falso
1 = Verdadero
Para obtener más información, vea Utilizar conjuntos de columnas.
Tipos de valor devueltos
int
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 OBJECTPROPERTY, 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 consulta siguiente, el contexto de la base de datos actual 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 OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO
OBJECTPROPERTY(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, todavía pueden producirse errores en la creación del índice propiamente dicha si no se cumplen algunos requisitos clave de los índices. Para obtener más información, vea CREATE INDEX (Transact-SQL).
OBJECTPROPERTY(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.
Cuando se crea una tabla, la opción QUOTED IDENTIFIER siempre se almacena como ON en los metadatos de la tabla, aunque se haya establecido en OFF al crear la tabla. Por tanto, OBJECTPROPERTY(table_id, 'IsQuotedIdentOn') siempre devolverá el valor 1 (verdadero).
Ejemplos
A. Comprobar si un objeto es una tabla
En el ejemplo siguiente se comprueba si UnitMeasure es una tabla de la base de datos AdventureWorks.
USE AdventureWorks;
GO
IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 1
PRINT 'UnitMeasure is a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 0
PRINT 'UnitMeasure is not a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') IS NULL
PRINT 'ERROR: UnitMeasure is not a valid object.';
GO
B. Comprobar si una función con valores escalares definida por el usuario es determinista
En el ejemplo siguiente se comprueba si es determinista la función con valores escalares definida por el usuario, ufnGetProductDealerPrice, que devuelve un valor money.
USE AdventureWorks;
GO
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic');
GO
El conjunto de resultados muestra que ufnGetProductDealerPrice no es una función determinista.
-----
0
C. Buscar los objetos que pertenecen a un esquema específico
En el siguiente ejemplo se utiliza la propiedad SchemaId para devolver todos los objetos que pertenecen al esquema Production.
USE AdventureWorks;
GO
SELECT name, object_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTY(object_id, N'SchemaId') = SCHEMA_ID(N'Production')
ORDER BY type_desc, name;
GO