OBJECTPROPERTY (Transact-SQL)

Aplica-se a:yesSQL Server (todas as versões compatíveis) YesBanco de Dados SQL do Azure YesInstância Gerenciada de SQL do Azure yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

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

Topic link iconConvenções de sintaxe do Transact-SQL

Sintaxe

OBJECTPROPERTY ( id , property )   

Observação

Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

id
É uma expressão que representa a ID do objeto no banco de dados atual. id é int e é considerado um objeto no escopo do esquema no contexto do banco de dados atual.

property
É uma expressão que representa as informações a serem retornadas para o objeto especificado por id. property pode ser um dos valores a seguir.

Observação

A menos que indicado o contrário, NULL é retornado quando property 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 property 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 Constraint Restrição PRIMARY KEY com um índice clusterizado.

1 = True

0 = False
CnstIsColumn Constraint Restrição CHECK, DEFAULT ou FOREIGN KEY em uma única coluna.

1 = True

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

1 = True

0 = False
CnstIsDisabled Constraint Restrição desabilitada.

1 = True

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

1 = True

0 = False
CnstIsNotRepl Constraint A restrição é definida por meio das palavras-chave NOT FOR REPLICATION.

1 = True

0 = False
CnstIsNotTrusted Constraint A restrição estava habilitada sem verificação das linhas existentes; portanto, a restrição pode não se manter para todas as linhas.

1 = True

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

1 = True

0 = False
ExecIsAfterTrigger Gatilho Gatilho AFTER.

1 = True

0 = False
ExecIsAnsiNullsOn Função Transact-SQL, procedimento Transact-SQL, gatilho Transact-SQL, exibição Configuração de ANSI_NULLS no momento da criação.

1 = True

0 = False
ExecIsDeleteTrigger Gatilho Gatilho DELETE.

1 = True

0 = False
ExecIsFirstDeleteTrigger Gatilho Primeiro gatilho acionado quando DELETE é executada na tabela.

1 = True

0 = False
ExecIsFirstInsertTrigger Gatilho Primeiro gatilho acionado quando INSERT é executada na tabela.

1 = True

0 = False
ExecIsFirstUpdateTrigger Gatilho Primeiro gatilho acionado quando UPDATE é executada na tabela.

1 = True

0 = False
ExecIsInsertTrigger Gatilho Gatilho INSERT.

1 = True

0 = False
ExecIsInsteadOfTrigger Gatilho Gatilho INSTEAD OF.

1 = True

0 = False
ExecIsLastDeleteTrigger Gatilho Último gatilho acionado quando DELETE é executado na tabela.

1 = True

0 = False
ExecIsLastInsertTrigger Gatilho Último gatilho acionado quando INSERT é executado na tabela.

1 = True

0 = False
ExecIsLastUpdateTrigger Gatilho Último gatilho acionado quando UPDATE é executado na tabela.

1 = True

0 = False
ExecIsQuotedIdentOn Função Transact-SQL, procedimento Transact-SQL, gatilho Transact-SQL, exibição Configuração de QUOTED_IDENTIFIER na criação.

1 = True

0 = False
ExecIsStartup Procedimento Procedimento de inicialização.

1 = True

0 = False
ExecIsTriggerDisabled Gatilho Gatilho desabilitado.

1 = True

0 = False
ExecIsTriggerNotForRepl Gatilho Gatilho definido como NOT FOR REPLICATION.

1 = True

0 = False
ExecIsUpdateTrigger Gatilho Gatilho UPDATE.

1 = True

0 = False
ExecIsWithNativeCompilation Procedimento Transact-SQL Aplica-se a: SQL Server 2014 (12.x) e posterior.

O procedimento é compilado nativamente.

1 = True

0 = False

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

1 = True

0 = False
HasDeleteTrigger Tabela, exibição A tabela ou exibição tem um gatilho DELETE.

1 = True

0 = False
HasInsertTrigger Tabela, exibição A tabela ou exibição tem um gatilho INSERT.

1 = True

0 = False
HasInsteadOfTrigger Tabela, exibição A tabela ou exibição tem um gatilho INSTEAD OF.

1 = True

0 = False
HasUpdateTrigger Tabela, exibição A tabela ou exibição tem um gatilho UPDATE.

1 = True

0 = False
IsAnsiNullsOn Função Transact-SQL, procedimento Transact-SQL, tabela, gatilho Transact-SQL, exibição Especifica que a configuração da opção ANSI NULLS para a tabela está ON. Isso significa que todas as comparações com um valor nulo são avaliadas como UNKNOWN. Essa configuração se aplica a todas as expressões na definição da tabela, inclusive colunas computadas e restrições, enquanto a tabela existir.

1 = True

0 = False
IsCheckCnst Qualquer objeto no escopo do esquema Restrição CHECK.

1 = True

0 = False
IsConstraint Qualquer objeto no escopo do esquema É uma restrição de coluna única CHECK, DEFAULT ou FOREIGN KEY em uma coluna ou tabela.

1 = True

0 = False
IsDefault Qualquer objeto no escopo do esquema Aplica-se a: SQL Server 2008 e posterior.

Padrão associado.

1 = True

0 = False
IsDefaultCnst Qualquer objeto no escopo do esquema Restrição DEFAULT.

1 = True

0 = False
IsDeterministic Função, exibição A propriedade determinista da função ou exibição.

1 = Determinista

0 = Não determinista
IsEncrypted Função Transact-SQL, procedimento Transact-SQL, tabela, gatilho Transact-SQL, exibição Indica que o texto original da instrução de módulo foi convertido para um formato ofuscado. A saída do ofuscamento não é diretamente visível em quaisquer exibições de catálogo no SQL Server 2005 (9.x). Os usuários que não tiverem acesso a tabelas do sistema ou arquivos do banco de dados não poderão recuperar o texto ofuscado. Entretanto, o texto está disponível para usuários que podem acessar as tabelas do sistema na porta DAC ou diretamente os arquivos do banco de dados. Além disso, os usuários que podem anexar um depurador ao processo de servidor também podem recuperar o procedimento original da memória em tempo de execução.

1 = Criptografado

0 = não criptografado

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

1 = True

0 = False
IsExtendedProc Qualquer objeto no escopo do esquema Procedimento estendido.

1 = True

0 = False
IsForeignKey Qualquer objeto no escopo do esquema Restrição FOREIGN KEY.

1 = True

0 = False
IsIndexed Tabela, exibição A tabela ou exibição que tem um índice.

1 = True

0 = False
IsIndexable Tabela, exibição Tabela ou exibição na qual um índice pode ser criado.

1 = True

0 = False
IsInlineFunction Função Função embutida.

1 = Função embutida

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

1 = True

0 = False
IsPrimaryKey Qualquer objeto no escopo do esquema Restrição PRIMARY KEY.

1 = True

0 = False

NULL = Não é uma função, ou a ID do objeto não é válida.
IsProcedure Qualquer objeto no escopo do esquema Procedimento.

1 = True

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

1 = ON

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

1 = True

0 = False
IsReplProc Qualquer objeto no escopo do esquema Procedimento de replicação.

1 = True

0 = False
IsRule Qualquer objeto no escopo do esquema Regra associada.

1 = True

0 = False
IsScalarFunction Função Função de valor escalar.

1 = Função de valor escalar

0 = Função com valor não escalar
IsSchemaBound Função, exibição Uma função associada a esquema ou exibição criada usando SCHEMABINDING.

1 = Associada a esquema

0 = Não associada a esquema.
IsSystemTable Tabela Tabela do sistema.

1 = True

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

1 = True

0 = False
IsTable Tabela Tabela.

1 = True

0 = False
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 no escopo do esquema Gatilho.

1 = True

0 = False
IsUniqueCnst Qualquer objeto no escopo do esquema Restrição UNIQUE.

1 = True

0 = False
IsUserTable Tabela Tabela definida pelo usuário.

1 = True

0 = False
IsView Exibir Exibição.

1 = True

0 = False
OwnerId Qualquer objeto no escopo do 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 é nonnull) sempre retornarão a mesma ID do proprietário como o pai.

Não nula = A ID de usuário do banco de dados do proprietário do objeto.
SchemaId Qualquer objeto no escopo do esquema ID do esquema ao qual o objeto pertence.
TableDeleteTrigger Tabela A tabela tem um gatilho DELETE.

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

>0 = o número de gatilhos DELETE.
TableFullTextMergeStatus Tabela Aplica-se a: SQL Server 2008 e posterior.

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

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

1 = O índice de texto completo está em mesclagem.
TableFullTextBackgroundUpdateIndexOn Tabela Aplica-se a: SQL Server 2008 e posterior.

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

1 = TRUE

0 = FALSE
TableFulltextCatalogId Tabela Aplica-se a: SQL Server 2008 e posterior.

ID do catálogo de texto completo no qual residem os dados do índice de texto completo para a 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 Tabela Aplica-se a: SQL Server 2008 e posterior.

O controle de alterações de texto completo da tabela está habilitado.

1 = TRUE

0 = FALSE
TableFulltextDocsProcessed Tabela Aplica-se a: SQL Server 2008 e posterior.

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 parte de um documento a ser indexado.

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

> 0 = um dos seguintes (A ou B): A) O número de documentos processados pelas 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 pelas operações de inserção ou atualização desde que o controle de alterações com população de índice de atualização em segundo plano foi habilitado, o esquema de índice de texto completo alterado, o catálogo de texto completo recriado ou a instância do SQL Server reiniciada, e assim por diante.

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

Essa propriedade não monitora nem conta linhas excluídas.
TableFulltextFailCount Tabela Aplica-se a: SQL Server 2008 e posterior.

Número de linhas que a Pesquisa de Texto Completo não indexou.

0 = A população foi concluída.

> 0 = um dos seguintes (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 Completa, Incremental ou Atualização 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 ou reinício da população. Isso pode ter sido causado por uma alteração de esquema, recriação do catálogo, reinicialização de servidor, etc.

NULL = A tabela não tem um índice de texto completo.
TableFulltextItemCount Tabela Aplica-se a: SQL Server 2008 e posterior.

Número de linhas que foram indexadas com texto completo com êxito.
TableFulltextKeyColumn Tabela Aplica-se a: SQL Server 2008 e posterior.

ID da coluna associada ao índice exclusivo de coluna única que participa da definição do índice de texto completo.

0 = A tabela não tem um índice de texto completo.
TableFulltextPendingChanges Tabela Aplica-se a: SQL Server 2008 e posterior.

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

0 = o controle de alterações não está habilitado.

NULL = A tabela não tem um índice de texto completo.
TableFulltextPopulateStatus Tabela Aplica-se a: SQL Server 2008 e posterior.

0 = Ocioso

1 = População completa em andamento.

2 = População incremental em andamento.

3 = Propagação de alterações controladas em andamento.

4 = Índice de atualização em segundo plano em andamento, bem como controle de alteração automática.

5 = Indexação de texto completo acelerado ou pausado.
TableHasActiveFulltextIndex Tabela Aplica-se a: SQL Server 2008 e posterior.

A tabela tem um índice de texto completo ativo.

1 = True

0 = False
TableHasCheckCnst Tabela A tabela tem uma restrição CHECK.

1 = True

0 = False
TableHasClustIndex Tabela A tabela tem um índice clusterizado.

1 = True

0 = False
TableHasDefaultCnst Tabela A tabela tem uma restrição DEFAULT.

1 = True

0 = False
TableHasDeleteTrigger Tabela A tabela tem um gatilho DELETE.

1 = True

0 = False
TableHasForeignKey Tabela A tabela tem uma restrição FOREIGN KEY.

1 = True

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

1 = True

0 = False
TableHasIdentity Tabela A tabela tem uma coluna de identidade.

1 = True

0 = False
TableHasIndex Tabela A tabela tem um índice de qualquer tipo.

1 = True

0 = False
TableHasInsertTrigger Tabela O objeto tem um gatilho INSERT.

1 = True

0 = False
TableHasNonclustIndex Tabela A tabela tem um índice não clusterizado.

1 = True

0 = False
TableHasPrimaryKey Tabela A tabela tem uma chave primária.

1 = True

0 = False
TableHasRowGuidCol Tabela A tabela contém um ROWGUIDCOL para uma coluna uniqueidentifier.

1 = True

0 = False
TableHasTextImage Tabela A tabela contém uma coluna text, ntext ou image.

1 = True

0 = False
TableHasTimestamp Tabela A tabela contém uma coluna timestamp.

1 = True

0 = False
TableHasUniqueCnst Tabela A tabela tem uma restrição UNIQUE.

1 = True

0 = False
TableHasUpdateTrigger Tabela O objeto tem um gatilho UPDATE.

1 = True

0 = False
TableHasVarDecimalStorageFormat Tabela A tabela é habilitada para o formato de armazenamento vardecimal.

1 = True

0 = False
TableInsertTrigger Tabela A tabela tem um gatilho INSERT.

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

>0 = o número de gatilhos INSERT.
TableIsFake Tabela A tabela não é real. Ela é materializada internamente sob demanda pelo Mecanismo de Banco de Dados do SQL Server.

1 = True

0 = False
TableIsLockedOnBulkLoad Tabela A tabela está bloqueada devido a um trabalho de bcp ou BULK INSERT.

1 = True

0 = False
TableIsMemoryOptimized Tabela Aplica-se a: SQL Server 2014 (12.x) e posterior.

A tabela tem otimização de memória

1 = True

0 = False

Tipo de dados base: int

Para obter mais informações, veja OLTP in-memory (otimização na memória).
TableIsPinned Tabela A tabela está fixada para ser mantida no cache de dados.

0 = False

Esse recurso não tem suporte no SQL Server 2005 (9.x) e em versões posteriores.
TableTextInRowLimit Tabela Máximo de bytes permitidos para text in row.

0 se a opção text in row não estiver definida.
TableUpdateTrigger Tabela A tabela tem um gatilho UPDATE.

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

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

0 = False

1 = True

Para obter mais informações, veja Usar conjuntos de colunas.
TableTemporalType Tabela Aplica-se a: SQL Server 2016 (13.x) e posterior.

Especifica o tipo de tabela.

0 = tabela não temporal

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

2 = tabela temporal com controle de versão do sistema

Tipos de retorno

int

Exceções

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

Permissões

Um usuário só pode exibir metadados de protegíveis de sua propriedade ou para os quais recebeu permissão. Isso significa que as funções internas emissoras de metadados, como OBJECTPROPERTY, podem retornar NULL se o usuário não tiver permissão no objeto. Para obter mais informações, consulte Metadata Visibility Configuration.

Comentários

O Mecanismo de Banco de Dados supõe que object_id esteja no contexto do banco de dados atual. Uma consulta que referencia uma object_id em outro banco de dados retornará NULL ou resultados incorretos. Por exemplo, na consulta a seguir, o contexto do banco de dados atual é o banco de dados mestre. O Mecanismo de Banco de Dados tentará retornar o valor de propriedade da object_id especificada nesse banco de dados, em vez do banco de dados especificado na consulta. A consulta retorna resultados incorretos porque a exibição vEmployee não está no banco de dados mestre.

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

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

OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') retornará um valor igual a 1 (verdadeiro) quando, pelo menos, uma coluna de uma tabela for adicionada para indexação. A indexação de texto completo será ativada automaticamente para população assim que a primeira coluna for adicionada para indexação.

Quando uma tabela é criada, a opção QUOTED IDENTIFIER 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 retornará o valor 1 (verdadeiro).

Exemplos

a. Verificando se um objeto é uma tabela

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

USE AdventureWorks2012;  
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. Verificando se uma função definida pelo usuário de valor escalar é determinística

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

USE AdventureWorks2012;  
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: Localizando objetos que pertencem a um esquema específico

O exemplo a seguir retorna todas as tabelas no 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  

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

D: Verificando se um objeto é uma tabela

O exemplo a seguir testa se dbo.DimReseller é uma tabela no banco de dados AdventureWorksPDW2012.

-- 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 Também

COLUMNPROPERTY (Transact-SQL)
funções de metadados (Transact-SQL)
OBJECTPROPERTYEX (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)
sys.objects (Transact-SQL)