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)