Compartir por


OBJECTPROPERTY (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric

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).

Convenciones de sintaxis de Transact-SQL

Sintaxis

OBJECTPROPERTY ( id , property )   

Argumentos

id
Es una expresión que representa el identificador del objeto en la base de datos actual. id es de tipo int y se considera que se trata de un objeto de ámbito de esquema en el 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 identificador de objeto válido, id es un tipo de objeto incompatible con el valor property especificado o el autor de la llamada no tiene permiso para ver los metadatos del objeto.

Nombre de propiedad Tipo de objeto Descripción y valores devueltos
CnstIsClustKey Restricción Restricción PRIMARY KEY con un índice clúster.

1 = True

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 clúster.

1 = True

0 = False
CnstIsNotRepl Restricción La restricción se define utilizando las palabras clave NOT FOR REPLICATION.

1 = True

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 = True

0 = False
ExecIsAfterTrigger Desencadenador Desencadenador AFTER.

1 = True

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 = True

0 = False
ExecIsDeleteTrigger Desencadenador Desencadenador DELETE.

1 = True

0 = False
ExecIsFirstDeleteTrigger Desencadenador Primer desencadenador que se activa cuando se ejecuta DELETE en la tabla.

1 = True

0 = False
ExecIsFirstInsertTrigger Desencadenador Primer desencadenador que se activa cuando se ejecuta INSERT en la tabla.

1 = True

0 = False
ExecIsFirstUpdateTrigger Desencadenador Primer desencadenador que se activa cuando se ejecuta UPDATE en la tabla.

1 = True

0 = False
ExecIsInsertTrigger Desencadenador Desencadenador INSERT.

1 = True

0 = False
ExecIsInsteadOfTrigger Desencadenador Desencadenador INSTEAD OF.

1 = True

0 = False
ExecIsLastDeleteTrigger Desencadenador Último desencadenador que se activa cuando se ejecuta DELETE en la tabla.

1 = True

0 = False
ExecIsLastInsertTrigger Desencadenador Último desencadenador que se activa cuando se ejecuta INSERT en la tabla.

1 = True

0 = False
ExecIsLastUpdateTrigger Desencadenador Último desencadenador que se activa cuando se ejecuta UPDATE en la tabla.

1 = True

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 = True

0 = False
ExecIsStartup Procedimiento Procedimiento de inicio.

1 = True

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 = True

0 = False
ExecIsWithNativeCompilation Procedimiento de Transact-SQL Válido para : SQL Server 2014 (12.x) y versiones posteriores.

El procedimiento se compila de forma nativa.

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
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 = True

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 tabla, incluidas las columnas calculadas y las restricciones, mientras la tabla exista.

1 = True

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 una tabla.

1 = True

0 = False
IsDefault Cualquier objeto en el ámbito de esquema Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

Valor predeterminado enlazado.

1 = True

0 = False
IsDefaultCnst Cualquier objeto en el ámbito de esquema Restricción DEFAULT.

1 = True

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 confuso. La salida de la protección no es directamente visible en ninguna de las vistas de catálogo de SQL Server 2005 (9.x). Los usuarios sin acceso a las tablas del sistema o a los archivos de base de datos no pueden recuperar el texto ofuscado. En cambio, 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 = Cifrada

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 = True

0 = False
IsExtendedProc Cualquier objeto en el ámbito de esquema Procedimiento extendido.

1 = True

0 = False
IsForeignKey Cualquier objeto en el ámbito de esquema Restricción FOREIGN KEY.

1 = True

0 = False
IsIndexed Tabla, vista Tabla o vista que tiene un índice.

1 = True

0 = False
IsIndexable Tabla, vista Tabla o vista en la que es posible crear un índice.

1 = True

0 = False
IsInlineFunction Función Función insertada.

1 = Función insertada

0 = Función no insertada
IsMSShipped Cualquier objeto en el ámbito de esquema Objeto creado durante la instalación de SQL Server.

1 = True

0 = False
IsPrimaryKey Cualquier objeto en el ámbito de esquema Restricción PRIMARY KEY.

1 = True

0 = False

NULL = No es una función o el identificador de objeto no es válido.
IsProcedure Cualquier objeto en el ámbito de esquema Procedimiento.

1 = True

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 = True

0 = False
IsScalarFunction Función Función escalar.

1 = Función escalar

0 = Función no escalar
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 = True

0 = False
IsSystemVerified Object SQL Server puede comprobar las propiedades de determinismo y precisión del objeto.

1 = True

0 = False
IsTable Tabla Tabla.

1 = True

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 = True

0 = False
IsUniqueCnst Cualquier objeto en el ámbito de esquema Restricción UNIQUE.

1 = True

0 = False
IsUserTable Tabla Tabla definida por el usuario.

1 = True

0 = False
IsView Ver Vista.

1 = True

0 = False
OwnerId Cualquier objeto en el ámbito de esquema Propietario del objeto.

Nota: El propietario del esquema no es necesariamente el propietario del objeto. Por ejemplo, los objetos secundarios (aquellos en los que parent_object_id no es NULL) siempre devolverán el mismo identificador de propietario que el primario.

Distinto de NULL = Identificador de usuario de base de datos que corresponde al propietario del objeto.
SchemaId Cualquier objeto en el ámbito de esquema Id. de esquema del esquema al que pertenece el objeto.
TableDeleteTrigger Tabla La tabla tiene un desencadenador DELETE.

>1 = Identificador 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 Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

Indica 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 de texto completo no se está combinando.

1 = El índice de texto completo se está combinando.
TableFullTextBackgroundUpdateIndexOn Tabla Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

La tabla tiene habilitada la opción de actualización de índices de texto completo en segundo plano (seguimiento de cambios automáticos).

1 = TRUE

0 = False
TableFulltextCatalogId Tabla Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

Identificador del catálogo de texto completo en el que residen los datos de índice de texto completo para la tabla.

Distinto de cero = Identificador 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.
TableFulltextChangeTrackingOn Tabla Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

La tabla tiene habilitado el seguimiento de cambios de texto completo.

1 = TRUE

0 = False
TableFulltextDocsProcessed Tabla Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

Número de filas procesadas desde el comienzo de la indización de texto completo. En una tabla que se indiza para búsquedas en texto completo, todas las columnas de una fila se consideran como 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 (A o B): A) 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. B) 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.

Esta propiedad no supervisa ni cuenta las filas eliminadas.
TableFulltextFailCount Tabla Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

Número de filas no indizadas por Búsqueda de texto completo.

0 = El rellenado se ha completado.

> 0 = Uno de los siguientes (A o B): A) 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. B) En el seguimiento de cambios con actualización de índices en segundo plano, el número de filas no indizadas desde el comienzo del rellenado o desde su reinicio. Esto puede deberse a un cambio del esquema, a la regeneración del catálogo, al reinicio del servidor, etc.

NULL = La tabla no tiene un índice de texto completo.
TableFulltextItemCount Tabla Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

Número de filas para las que se crearon índices de texto completo correctamente.
TableFulltextKeyColumn Tabla Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

Identificador 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.
TableFulltextPendingChanges Tabla Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

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.
TableFulltextPopulateStatus Tabla Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

0 = Inactiva

1 = Rellenado completo en curso.

2 = Rellenado 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 completo acelerada o pausada.
TableHasActiveFulltextIndex Tabla Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

La tabla tiene un índice de texto completo activo.

1 = True

0 = False
TableHasCheckCnst Tabla La tabla tiene una restricción CHECK.

1 = True

0 = False
TableHasClustIndex Tabla La tabla tiene un índice clúster.

1 = True

0 = False
TableHasDefaultCnst Tabla La tabla tiene una restricción DEFAULT.

1 = True

0 = False
TableHasDeleteTrigger Tabla La tabla tiene un desencadenador DELETE.

1 = True

0 = False
TableHasForeignKey Tabla La tabla tiene una restricción FOREIGN KEY.

1 = True

0 = False
TableHasForeignRef Tabla Una restricción FOREIGN KEY hace referencia a la tabla.

1 = True

0 = False
TableHasIdentity Tabla La tabla tiene una columna de identidad.

1 = True

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 = True

0 = False
TableHasNonclustIndex Tabla La tabla tiene un índice no clúster.

1 = True

0 = False
TableHasPrimaryKey Tabla La tabla tiene una clave principal.

1 = True

0 = False
TableHasRowGuidCol Tabla La tabla tiene un parámetro ROWGUIDCOL para una columna uniqueidentifier.

1 = True

0 = False
TableHasTextImage Tabla La tabla tiene una columna text, ntext o image.

1 = True

0 = False
TableHasTimestamp Tabla La tabla tiene una columna timestamp.

1 = True

0 = False
TableHasUniqueCnst Tabla La tabla tiene una restricción UNIQUE.

1 = True

0 = False
TableHasUpdateTrigger Tabla El objeto tiene un desencadenador UPDATE.

1 = True

0 = False
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 = Identificador 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. Motor de base de datos de SQL Server la materializa internamente a petición.

1 = True

0 = False
TableIsLockedOnBulkLoad Tabla La tabla está bloqueada debido a una operación con bcp o BULK INSERT.

1 = True

0 = False
TableIsMemoryOptimized Tabla Válido para : SQL Server 2014 (12.x) y versiones posteriores.

La tabla tiene optimización para memoria

1 = True

0 = False

Tipo de datos base: int

Para obtener más información, vea OLTP en memoria (optimización en memoria).
TableIsPinned Tabla La tabla se ancla para que se mantenga en la memoria caché de datos.

0 = False

Esta característica no se admite en SQL Server 2005 (9.x) ni en 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 = Identificador 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 conjunto de columnas.

0 = False

1 = True

Para obtener más información, vea Usar conjuntos de columnas.
TableTemporalType Tabla Válido para : SQL Server 2016 (13.x) y versiones posteriores.

Especifica el tipo de tabla.

0 = tabla no temporal

1 = tabla de historial para la tabla con control de versiones del sistema

2 = tabla temporal con control de versiones del sistema

Tipos de valor devuelto

int

Excepciones

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

Permisos

Un usuario solo 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, consulte Metadata Visibility Configuration.

Comentarios

El Motor de base de datos da por hecho 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 maestra. El 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 maestra.

USE master;  
GO  
SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks2022.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, 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 más información, consulte CREATE INDEX (Transact-SQL).

OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') devolverá el valor 1 (verdadero) si se agrega al menos una columna de una tabla para la 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.

Al crear una tabla, la opción QUOTED IDENTIFIER siempre se almacena como ON en los metadatos de la tabla, incluso si la opción está establecida 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 AdventureWorks2022.

USE AdventureWorks2022;  
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 escalar definida por el usuario es determinista

En el siguiente ejemplo se comprueba si es determinista la función escalar definida por el usuario, ufnGetProductDealerPrice, que devuelve un valor money.

USE AdventureWorks2022;  
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 las tablas que pertenecen a un esquema específico

En el siguiente ejemplo se devuelven todas las tablas del esquema dbo.

-- Uses AdventureWorks  
  
SELECT name, object_id, type_desc  
FROM sys.objects   
WHERE OBJECTPROPERTY(object_id, N'SchemaId') = SCHEMA_ID(N'dbo')  
ORDER BY type_desc, name;  
GO  

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

D. Comprobar si un objeto es una tabla

En el ejemplo siguiente se comprueba si dbo.DimReseller es una tabla de la base de datos AdventureWorksPDW2022.

-- Uses AdventureWorks  
  
IF OBJECTPROPERTY (OBJECT_ID(N'dbo.DimReseller'),'ISTABLE') = 1  
   SELECT 'DimReseller is a table.'  
ELSE   
   SELECT 'DimReseller is not a table.';  
GO  

Consulte también

COLUMNPROPERTY (Transact-SQL)
Funciones de metadatos (Transact-SQL)
OBJECTPROPERTYEX (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)
sys.objects (Transact-SQL)