Partilhar via


OBJECTPROPERTY (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Retorna informações sobre objetos com escopo de esquema no banco de dados atual. Para obter uma lista de objetos com escopo de esquema, consulte sys.objects (Transact-SQL). Essa função não pode ser usada para objetos que não têm escopo de esquema, como gatilhos DDL (linguagem de definição de dados) e notificações de eventos.

Transact-SQL convenções de sintaxe

Sintaxe

OBJECTPROPERTY ( ID , property )

Arguments

ID

Expressão que representa a ID do objeto no banco de dados atual. ID é int e é assumido como um objeto com escopo de esquema no contexto de banco de dados atual.

propriedade

Expressão que representa as informações a serem retornadas para o objeto especificado pela ID. propriedade pode ser um dos seguintes valores.

Observação

A menos que indicado de outra forma, NULL é retornado quando a propriedade não é um nome de propriedade válido, ID não é uma ID de objeto válida, ID é um tipo de objeto sem suporte para a propriedade especificada ou o chamador não tem permissão para exibir os metadados do objeto.

Nome da propriedade Tipo de objeto Descrição e valores retornados
CnstIsClustKey Restrição PRIMARY KEY com um índice clusterizado.

1 = Verdadeiro

0 = Falso
CnstIsColumn Restrição CHECK, DEFAULTou FOREIGN KEY restrição em uma única coluna.

1 = Verdadeiro

0 = Falso
CnstIsDeleteCascade Restrição FOREIGN KEY restrição com a ON DELETE CASCADE opção.

1 = Verdadeiro

0 = Falso
CnstIsDisabled Restrição Restrição desativada.

1 = Verdadeiro

0 = Falso
CnstIsNonclustKey Restrição PRIMARY KEY ou UNIQUE restrição com um índice não clusterizado.

1 = Verdadeiro

0 = Falso
CnstIsNotRepl Restrição A restrição é definida usando as NOT FOR REPLICATION palavras-chave.

1 = Verdadeiro

0 = Falso
CnstIsNotTrusted Restrição A restrição foi ativada sem verificar as linhas existentes; portanto, a restrição pode não ser válida para todas as linhas.

1 = Verdadeiro

0 = Falso
CnstIsUpdateCascade Restrição FOREIGN KEY restrição com a ON UPDATE CASCADE opção.

1 = Verdadeiro

0 = Falso
ExecIsAfterTrigger Acionador AFTER gatilho.

1 = Verdadeiro

0 = Falso
ExecIsAnsiNullsOn Transact-SQL função, Transact-SQL procedimento, Transact-SQL gatilho, vista Configuração de no momento da ANSI_NULLS criação.

1 = Verdadeiro

0 = Falso
ExecIsDeleteTrigger Acionador DELETE gatilho.

1 = Verdadeiro

0 = Falso
ExecIsFirstDeleteTrigger Acionador Primeiro gatilho disparado quando um DELETE é executado contra a tabela.

1 = Verdadeiro

0 = Falso
ExecIsFirstInsertTrigger Acionador Primeiro gatilho disparado quando um INSERT é executado contra a tabela.

1 = Verdadeiro

0 = Falso
ExecIsFirstUpdateTrigger Acionador Primeiro gatilho disparado quando um UPDATE é executado contra a tabela.

1 = Verdadeiro

0 = Falso
ExecIsInsertTrigger Acionador INSERT gatilho.

1 = Verdadeiro

0 = Falso
ExecIsInsteadOfTrigger Acionador INSTEAD OF gatilho.

1 = Verdadeiro

0 = Falso
ExecIsLastDeleteTrigger Acionador Último gatilho disparado quando um DELETE é executado contra a tabela.

1 = Verdadeiro

0 = Falso
ExecIsLastInsertTrigger Acionador Último gatilho disparado quando um INSERT é executado contra a tabela.

1 = Verdadeiro

0 = Falso
ExecIsLastUpdateTrigger Acionador Último gatilho disparado quando um UPDATE é executado contra a tabela.

1 = Verdadeiro

0 = Falso
ExecIsQuotedIdentOn Transact-SQL função, Transact-SQL procedimento, Transact-SQL gatilho, vista Configuração de no momento da QUOTED_IDENTIFIER criação.

1 = Verdadeiro

0 = Falso
ExecIsStartup Procedure Procedimento de inicialização.

1 = Verdadeiro

0 = Falso
ExecIsTriggerDisabled Acionador Gatilho desativado.

1 = Verdadeiro

0 = Falso
ExecIsTriggerNotForRepl Acionador Gatilho definido como NOT FOR REPLICATION.

1 = Verdadeiro

0 = Falso
ExecIsUpdateTrigger Acionador UPDATE gatilho.

1 = Verdadeiro

0 = Falso
ExecIsWithNativeCompilation Transact-SQL Procedimento Aplica-se a: SQL Server 2014 (12.x) e versões posteriores.

O procedimento é compilado nativamente.

1 = Verdadeiro

0 = Falso

Tipo de dados de base: int
HasAfterTrigger Tabela ou vista Tabela ou exibição tem um AFTER gatilho.

1 = Verdadeiro

0 = Falso
HasDeleteTrigger Tabela ou vista A tabela ou vista tem um DELETE gatilho.

1 = Verdadeiro

0 = Falso
HasInsertTrigger Tabela ou vista Tabela ou exibição tem um INSERT gatilho.

1 = Verdadeiro

0 = Falso
HasInsteadOfTrigger Tabela ou vista Tabela ou exibição tem um INSTEAD OF gatilho.

1 = Verdadeiro

0 = Falso
HasUpdateTrigger Tabela ou vista Tabela ou exibição tem um UPDATE gatilho.

1 = Verdadeiro

0 = Falso
IsAnsiNullsOn Transact-SQL função, Transact-SQL procedimento, tabela, Transact-SQL gatilho, vista Especifica que a configuração de ANSI NULLS opção para a tabela é ON. Quando ANSI NULLS é ON, todas as comparações com um NULL valor avaliam a UNKNOWN. Essa configuração se aplica a todas as expressões na definição de tabela, incluindo colunas computadas e restrições, enquanto a tabela existir.

1 = Verdadeiro

0 = Falso
IsCheckCnst Qualquer objeto com escopo de esquema CHECK restrição.

1 = Verdadeiro

0 = Falso
IsConstraint Qualquer objeto com escopo de esquema É uma única coluna CHECK, DEFAULTou FOREIGN KEY restrição em uma coluna ou tabela.

1 = Verdadeiro

0 = Falso
IsDefault Qualquer objeto com escopo de esquema Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

Padrão vinculado.

1 = Verdadeiro

0 = Falso
IsDefaultCnst Qualquer objeto com escopo de esquema DEFAULT restrição.

1 = Verdadeiro

0 = Falso
IsDeterministic Função ou vista A propriedade determinismo da função ou visão.

1 = Determinística

0 = Não determinístico
IsEncrypted Transact-SQL função, Transact-SQL procedimento, tabela, Transact-SQL gatilho, vista Indica que o texto original da instrução module foi convertido para um formato ofuscado. A saída da ofuscação não é diretamente visível em nenhuma das exibições de catálogo no SQL Server 2005 (9.x). Os usuários sem acesso a tabelas do sistema ou arquivos de banco de dados não podem recuperar o texto ofuscado. No entanto, o texto está disponível para usuários que podem acessar tabelas do sistema através da conexão de diagnóstico para administradores de banco de dados ou acessar diretamente arquivos de banco de dados. Além disso, os usuários que podem anexar um depurador ao processo do servidor podem recuperar o procedimento original da memória em tempo de execução.

1 = Criptografado

0 = Não criptografado

Tipo de dados de base: int
IsExecuted Qualquer objeto com escopo de esquema O objeto pode ser executado (visualização, procedimento, função ou gatilho).

1 = Verdadeiro

0 = Falso
IsExtendedProc Qualquer objeto com escopo de esquema Procedimento alargado.

1 = Verdadeiro

0 = Falso
IsForeignKey Qualquer objeto com escopo de esquema FOREIGN KEY restrição.

1 = Verdadeiro

0 = Falso
IsIndexed Tabela ou vista Tabela ou vista que tem um índice.

1 = Verdadeiro

0 = Falso
IsIndexable Tabela ou vista Tabela ou vista na qual um índice pode ser criado.

1 = Verdadeiro

0 = Falso
IsInlineFunction Função Função em linha.

1 = Função em linha

0 = Função não embutida
IsMSShipped Qualquer objeto com escopo de esquema Objeto criado durante a instalação do SQL Server.

1 = Verdadeiro

0 = Falso
IsPrimaryKey Qualquer objeto com escopo de esquema PRIMARY KEY restrição.

1 = Verdadeiro

0 = Falso

NULL = Não é uma função ou ID de objeto não é válido.
IsProcedure Qualquer objeto com escopo de esquema Procedimento.

1 = Verdadeiro

0 = Falso
IsQuotedIdentOn Transact-SQL função, Transact-SQL procedimento, tabela, Transact-SQL gatilho, vista, CHECK restrição, DEFAULT definição Especifica que a configuração do identificador entre aspas para o objeto é ON. Isso significa que aspas duplas delimitam identificadores em todas as expressões envolvidas na definição de objeto.

1 = ON

0 = OFF
IsQueue Qualquer objeto com escopo de esquema Fila do Service Broker

1 = Verdadeiro

0 = Falso
IsReplProc Qualquer objeto com escopo de esquema Procedimento de replicação.

1 = Verdadeiro

0 = Falso
IsRule Qualquer objeto com escopo de esquema Regra vinculada.

1 = Verdadeiro

0 = Falso
IsScalarFunction Função Função com valor escalar.

1 = Função com valor escalar

0 = Função com valor não escalar
IsSchemaBound Função ou vista Uma função ou exibição vinculada ao esquema criada usando SCHEMABINDINGo .

1 = Vinculado ao esquema

0 = Não vinculado ao esquema.
IsSystemTable Table Tabela do sistema.

1 = Verdadeiro

0 = Falso
IsSystemVerified Objeto O SQL Server pode verificar as propriedades de determinismo e precisão do objeto.

1 = Verdadeiro

0 = Falso
IsTable Table Tabela.

1 = Verdadeiro

0 = Falso
IsTableFunction Função Função com valor de tabela.

1 = Função com valor de tabela

0 = Função sem valor de tabela
IsTrigger Qualquer objeto com escopo de esquema Gatilho.

1 = Verdadeiro

0 = Falso
IsUniqueCnst Qualquer objeto com escopo de esquema UNIQUE restrição.

1 = Verdadeiro

0 = Falso
IsUserTable Table Tabela definida pelo usuário.

1 = Verdadeiro

0 = Falso
IsView View Veja.

1 = Verdadeiro

0 = Falso
OwnerId Qualquer objeto com escopo de esquema Proprietário do objeto.

Observação: O proprietário do esquema não é necessariamente o proprietário do objeto. Por exemplo, objetos filho (aqueles em que parent_object_id não é nulo) sempre retornarão o mesmo ID de proprietário que o pai.

Não-nulo = O ID de usuário do banco de dados do proprietário do objeto.
SchemaId Qualquer objeto com escopo de esquema ID do esquema ao qual o objeto pertence.
TableDeleteTrigger Table A tabela tem um DELETE gatilho.

>1 = ID do primeiro gatilho com o tipo especificado.
TableDeleteTriggerCount Table A tabela tem o número especificado de DELETE gatilhos.

>0 = O número de DELETE gatilhos.
TableFullTextMergeStatus Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

Se uma tabela que tem um índice de texto completo que está atualmente em fusão.

0 = A tabela não tem um índice de texto completo ou o índice de texto completo não está em fusão.

1 = O índice de texto completo está em fusão.
TableFullTextBackgroundUpdateIndexOn Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

A tabela tem o índice de atualização de plano de fundo de texto completo (controle de alteração automática) habilitado.

1 = VERDADEIRO

0 = FALSO
TableFulltextCatalogId Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

ID do catálogo de texto completo no qual residem os dados de índice de texto completo da tabela.

Diferente de zero = ID de catálogo de texto completo, associado ao índice exclusivo que identifica as linhas em uma tabela indexada de texto completo.

0 = A tabela não tem um índice de texto completo.
TableFulltextChangeTrackingOn Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

A tabela tem o controle de alterações de texto completo habilitado.

1 = VERDADEIRO

0 = FALSO
TableFulltextDocsProcessed Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

Número de linhas processadas desde o início da indexação de texto completo. Em uma tabela que está sendo indexada para pesquisa de texto completo, todas as colunas de uma linha são consideradas como parte de um documento a ser indexado.

0 = Nenhum rastreamento ativo ou indexação de texto completo foi concluído.

> 0 = Uma das seguintes opções (A ou B): A) O número de documentos processados por operações de inserção ou atualização desde o início da população de controle de alterações completa, incremental ou manual. B) O número de linhas processadas por operações de inserção ou atualização desde que o controle de alterações com a população de índice de atualização em segundo plano foi habilitado, o esquema de índice de texto completo foi alterado, o catálogo de texto completo reconstruído ou a instância do SQL Server reiniciada.

NULL = A tabela não tem um índice de texto completo.

Esta propriedade não monitoriza nem conta linhas eliminadas.
TableFulltextFailCount Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

Número de linhas Full-Text Pesquisa não indexou.

0 = A população completada.

> 0 = Uma das seguintes opções (A ou B): A) O número de documentos que não foram indexados desde o início da população de controle de alterações de Atualização Completa, Incremental e Manual. B) Para o controle de alterações com índice de atualização em segundo plano, o número de linhas que não foram indexadas desde o início da população, ou o reinício da população. Isso pode ser causado por uma alteração de esquema, reconstrução do catálogo, reinicialização do servidor e assim por diante.

NULL = A tabela não tem um índice de texto completo.
TableFulltextItemCount Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

Número de linhas que foram indexadas com êxito em texto completo.
TableFulltextKeyColumn Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

ID da coluna associada ao índice exclusivo de coluna única que está participando da definição de índice de texto completo.

0 = A tabela não tem um índice de texto completo.
TableFulltextPendingChanges Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

Número de entradas pendentes de controle de alterações a serem processadas.

0 = o controlo de alterações não está ativado.

NULL = A tabela não tem um índice de texto completo.
TableFulltextPopulateStatus Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

0 = Inativo.

1 = A população completa está em andamento.

2 = A população incremental está em curso.

3 = A propagação das alterações controladas está em curso.

4 = O índice de atualização em segundo plano está em andamento, como o rastreamento de mudança automática.

5 = A indexação de texto completo é limitada ou pausada.
TableHasActiveFulltextIndex Table Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores.

A tabela tem um índice de texto completo ativo.

1 = Verdadeiro

0 = Falso
TableHasCheckCnst Table A tabela tem uma CHECK restrição.

1 = Verdadeiro

0 = Falso
TableHasClustIndex Table A tabela tem um índice agrupado.

1 = Verdadeiro

0 = Falso
TableHasDefaultCnst Table A tabela tem uma DEFAULT restrição.

1 = Verdadeiro

0 = Falso
TableHasDeleteTrigger Table A tabela tem um DELETE gatilho.

1 = Verdadeiro

0 = Falso
TableHasForeignKey Table A tabela tem uma FOREIGN KEY restrição.

1 = Verdadeiro

0 = Falso
TableHasForeignRef Table A tabela é referenciada por uma FOREIGN KEY restrição.

1 = Verdadeiro

0 = Falso
TableHasIdentity Table A tabela tem uma coluna de identidade.

1 = Verdadeiro

0 = Falso
TableHasIndex Table Tabela tem um índice de qualquer tipo.

1 = Verdadeiro

0 = Falso
TableHasInsertTrigger Table O objeto tem um INSERT gatilho.

1 = Verdadeiro

0 = Falso
TableHasNonclustIndex Table A tabela tem um índice não clusterizado.

1 = Verdadeiro

0 = Falso
TableHasPrimaryKey Table A tabela tem uma chave primária.

1 = Verdadeiro

0 = Falso
TableHasRowGuidCol Table A tabela tem uma ROWGUIDCOL coluna para um identificador exclusivo .

1 = Verdadeiro

0 = Falso
TableHasTextImage Table A tabela tem uma coluna de texto, ntext ou imagem .

1 = Verdadeiro

0 = Falso
TableHasTimestamp Table A tabela tem uma coluna de carimbo de data/hora .

1 = Verdadeiro

0 = Falso
TableHasUniqueCnst Table A tabela tem uma UNIQUE restrição.

1 = Verdadeiro

0 = Falso
TableHasUpdateTrigger Table O objeto tem um UPDATE gatilho.

1 = Verdadeiro

0 = Falso
TableHasVarDecimalStorageFormat Table A tabela está habilitada para o formato de armazenamento vardecimal .

1 = Verdadeiro

0 = Falso
TableInsertTrigger Table A tabela tem um INSERT gatilho.

>1 = ID do primeiro gatilho com o tipo especificado.
TableInsertTriggerCount Table A tabela tem o número especificado de INSERT gatilhos.

>0 = O número de INSERT gatilhos.
TableIsFake Table A tabela não é real. Ele é materializado internamente sob demanda pelo Mecanismo de Banco de Dados do SQL Server.

1 = Verdadeiro

0 = Falso
TableIsLockedOnBulkLoad Table A tabela está bloqueada devido a um bcp ou BULK INSERT trabalho.

1 = Verdadeiro

0 = Falso
TableIsMemoryOptimized Table Aplica-se a: SQL Server 2014 (12.x) e versões posteriores.

A tabela é otimizada para memória

1 = Verdadeiro

0 = Falso

Tipo de dados de base: int

Para obter mais informações, consulte In-Memory visão geral do OLTP e cenários de uso.
TableIsPinned Table A tabela é fixada para ser mantida no cache de dados.

0 = Falso

Esse recurso não é suportado no SQL Server 2005 (9.x) e versões posteriores.
TableTextInRowLimit Table Máximo de bytes permitidos para texto em linha.

0 se a opção de texto na linha não estiver definida.
TableUpdateTrigger Table A tabela tem um UPDATE gatilho.

> 1 = ID do primeiro gatilho com o tipo especificado.
TableUpdateTriggerCount Table A tabela tem o número especificado de UPDATE gatilhos.

> 0 = O número de UPDATE gatilhos.
TableHasColumnSet Table A tabela tem um conjunto de colunas.

0 = Falso

1 = Verdadeiro

Para obter mais informações, consulte Usar conjuntos de colunas.
TableTemporalType Table Aplica-se a: SQL Server 2016 (13.x) e versões posteriores.

Especifica o tipo de tabela.

0 = tabela não temporal

1 = tabela de histórico para tabela com versão do sistema

2 = tabela temporal com versão do sistema

Tipos de devolução

int

Exceptions

Retorna NULL em caso de erro ou se um chamador não tiver permissão para exibir o objeto.

Permissions

Um usuário só pode visualizar os metadados de protegíveis que o usuário possui ou sobre os quais o usuário recebeu permissão. Isso significa que as funções internas emissoras de metadados, como OBJECTPROPERTY retornam NULL , se o usuário não tiver nenhuma permissão no objeto. Para obter mais informações, consulte Configuração de visibilidade de metadados.

Observações

O Mecanismo de Banco de Dados pressupõe que object_id esteja no contexto atual do banco de dados. Uma consulta que faz referência a um object_id em outro banco de dados retorna NULL ou resultados incorretos. Por exemplo, na consulta a seguir, o contexto atual do banco de dados é o master banco de dados. O Mecanismo de Banco de Dados tenta retornar o valor da propriedade para o object_id especificado nesse banco de dados em vez do banco de dados especificado na consulta. A consulta retorna resultados incorretos porque o modo de exibição vEmployee não está no master banco de dados.

USE master;
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks2022.HumanResources.vEmployee'), 'IsView');
GO

OBJECTPROPERTY(view_id, 'IsIndexable') pode consumir recursos significativos do computador porque a avaliação da propriedade IsIndexable requer a análise da definição de exibição, normalização e otimização parcial. Embora a propriedade IsIndexable identifique tabelas ou exibições que podem ser indexadas, a criação real do índice ainda pode falhar se determinados requisitos de chave de índice não forem atendidos. Para obter mais informações, consulte CREATE INDEX (Transact-SQL).

OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') Retorna um valor de 1 (true) quando pelo menos uma coluna de uma tabela é adicionada para indexação. A indexação de texto completo torna-se ativa para a população assim que a primeira coluna é adicionada para indexação.

Quando uma tabela é criada, a QUOTED IDENTIFIER opção é sempre armazenada como ON nos metadados da tabela, mesmo que a opção esteja definida como OFF quando a tabela é criada. Portanto, OBJECTPROPERTY(table_id, 'IsQuotedIdentOn') sempre retorna um valor de 1 (true).

Examples

A. Verificar se um objeto é uma tabela

O exemplo a seguir testa se UnitMeasure é uma tabela no AdventureWorks2025 banco de dados.

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. Verifique se uma função definida pelo usuário com valor escalar é determinística

O exemplo a seguir testa se a função ufnGetProductDealerPricede valor escalar definida pelo usuário, que retorna um valor monetário , é determinística.

USE AdventureWorks2022;
GO
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic');
GO

O conjunto de resultados mostra que ufnGetProductDealerPrice não é uma função determinística.

-----
0

C: Localizar as tabelas que pertencem a um esquema específico

O exemplo a seguir retorna todas as tabelas no dbo esquema.

-- Uses AdventureWorks

SELECT schema_name(o.schema_id), o.name, o.object_id, o.type_desc
FROM sys.objects AS o
WHERE OBJECTPROPERTY(o.object_id, N'SchemaId') = SCHEMA_ID(N'dbo')
ORDER BY o.type_desc, o.name;
GO

Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)

D: Verificando se um objeto é uma tabela

O exemplo a seguir testa se dbo.DimReseller é uma tabela no banco de dados 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