OBJECTPROPERTY (Transact-SQL)

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 por objetos que não sejam de escopo de esquema, como gatilhos DDL (linguagem de definição de dados) e notificações de eventos.

Ícone de vínculo de tópico Convenções de sintaxe Transact-SQL

Sintaxe

OBJECTPROPERTY ( id , property ) 

Argumentos

  • id
    É uma expressão que representa a ID do objeto no banco de dados atual. id é int e é considerado como um objeto no esquema com escopo no banco de dados especificado ou 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çãoObservaçã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

    Restrição

    Restrição PRIMARY KEY com um índice clusterizado.

    1 = Verdadeiro

    0 = Falso

    CnstIsColumn

    Restrição

    Restrição CHECK, DEFAULT ou FOREIGN KEY em uma única coluna.

    1 = Verdadeiro

    0 = Falso

    CnstIsDeleteCascade

    Restrição

    Restrição FOREIGN KEY com a opção ON DELETE CASCADE.

    1 = True

    0 = False

    CnstIsDisabled

    Restrição

    Restrição desabilitada.

    1 = True

    0 = False

    CnstIsNonclustKey

    Restrição

    Restrição PRIMARY KEY ou UNIQUE com um índice não clusterizado.

    1 = Verdadeiro

    0 = Falso

    CnstIsNotRepl

    Restrição

    A restrição é definida por meio de palavras-chave NOT FOR REPLICATION.

    1 = Verdadeiro

    0 = Falso

    CnstIsNotTrusted

    Restrição

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

    0 = Falso

    CnstIsUpdateCascade

    Restrição

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

    0 = Falso

    ExecIsFirstInsertTrigger

    Gatilho

    Primeiro gatilho acionado quando INSERT é executada na tabela.

    1 = Verdadeiro

    0 = Falso

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

    0 = Falso

    ExecIsLastInsertTrigger

    Gatilho

    Último gatilho acionado quando INSERT é executada na tabela.

    1 = Verdadeiro

    0 = Falso

    ExecIsLastUpdateTrigger

    Gatilho

    Último gatilho acionado quando UPDATE é executada na tabela.

    1 = Verdadeiro

    0 = Falso

    ExecIsQuotedIdentOn

    Função Transact-SQL, procedimento Transact-SQL, gatilho Transact-SQL, exibição

    Configuração de QUOTED_IDENTIFIER no momento da 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

    HasAfterTrigger

    Tabela, exibição

    A tabela ou exibição tem um gatilho AFTER.

    1 = Verdadeiro

    0 = Falso

    HasDeleteTrigger

    Tabela, exibição

    A tabela ou exibição tem um gatilho DELETE.

    1 = Verdadeiro

    0 = Falso

    HasInsertTrigger

    Tabela, exibição

    A tabela ou exibição tem um gatilho INSERT.

    1 = Verdadeiro

    0 = Falso

    HasInsteadOfTrigger

    Tabela, exibição

    A tabela ou exibição tem um gatilho INSTEAD OF.

    1 = Verdadeiro

    0 = Falso

    HasUpdateTrigger

    Tabela, exibição

    A tabela ou exibição tem um gatilho UPDATE.

    1 = Verdadeiro

    0 = Falso

    IsAnsiNullsOn

    Função Transact-SQL, procedimento, tabela Transact-SQL, gatilho, exibição Transact-SQL

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

    0 = Falso

    IsCheckCnst

    Qualquer objeto com escopo de esquema

    Restrição CHECK.

    1 = Verdadeiro

    0 = Falso

    IsConstraint

    Qualquer objeto com escopo de 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

    Padrão de associação.

    1 = True

    0 = False

    IsDefaultCnst

    Qualquer objeto no escopo do esquema

    Restrição DEFAULT.

    1 = Verdadeiro

    0 = Falso

    IsDeterministic

    Função, exibição

    A propriedade determinista da função ou exibição.

    1 = Determinística

    0 = Não determinística

    IsEncrypted

    Função Transact-SQL, procedimento, tabela Transact-SQL, gatilho, exibição Transact-SQL

    Indica que o texto original da instrução de módulo foi convertido em um formato ofuscado. A saída do ofuscamento não é diretamente visível em quaisquer exibições do catálogo no SQL Server 2005. 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 estará disponível para usuários privilegiados que puderem acessar as tabelas do sistema na porta DAC ou acessar 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 com escopo de esquema

    O objeto pode ser executado (exibição, procedimento, função ou gatilho).

    1 = Verdadeiro

    0 = Falso

    IsExtendedProc

    Qualquer objeto com escopo de esquema

    Procedimento estendido.

    1 = Verdadeiro

    0 = Falso

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

    IsInlineFunction

    Função

    Função embutida.

    1 = Função embutida

    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

    Restrição PRIMARY KEY.

    1 = Verdadeiro

    0 = Falso

    NULL = Não é uma função, ou a ID do objeto não é válida.

    IsProcedure

    Qualquer objeto com escopo de esquema

    Procedimento.

    1 = Verdadeiro

    0 = Falso

    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 com escopo de esquema

    Fila do Service Broker

    1 = True

    0 = Falso

    IsReplProc

    Qualquer objeto com escopo de 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 com SCHEMABINDING.

    1 = Associada a esquema

    0 = Não associada a esquema.

    IsSystemTable

    Tabela

    Tabela do sistema.

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

    0 = Falso

    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çãoObservação

    O proprietário do esquema não é necessariamente o proprietário do objeto. Por exemplo, objetos filho (aqueles onde parent_object_id não é nulo) 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.

    TableDeleteTrigger

    Table

    A tabela tem um gatilho DELETE.

    >1 = ID do primeiro gatilho com o tipo especificado.

    TableDeleteTriggerCount

    Table

    A tabela tem o número especificado de gatilhos DELETE.

    >0 = O número de gatilhos DELETE.

    TableFullTextMergeStatus

    Table

    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

    Table

    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

    Table

    ID do catálogo de texto completo no qual residem os dados do í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

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

    1 = TRUE

    0 = FALSE

    TableFulltextDocsProcessed

    Table

    Número de linhas processado desde o início da indexação de texto completo. Em uma tabela 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 = Uma das seguintes opções:

    • 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ção Completa, Incremental ou Manual.

    • 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, etc.

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

    ObservaçãoObservação

    Essa propriedade não monitora nem conta linhas excluídas.

    TableFulltextFailCount

    Table

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

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

    > 0 = Uma das seguintes opções:

    • O número de documentos que não foram indexados desde o início da população de controle de alteração Completa, Incremental ou Manual.

    • Para controle de alteração 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

    Table

    Número de linhas que foram indexadas com texto completo com êxito.

    TableFulltextKeyColumn

    Table

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

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

    TableFulltextPendingChanges

    Table

    Número de entradas de controle de alteração pendentes a ser processado.

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

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

    TableFulltextPopulateStatus

    Table

    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

    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 tem um ROWGUIDCOL para uma coluna uniqueidentifier.

    1 = True

    0 = False

    TableHasTextImage

    Tabela

    A tabela tem uma coluna text, ntext ou image.

    1 = True

    0 = False

    TableHasTimestamp

    Tabela

    A tabela tem 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 está 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

    Table

    A tabela tem o número especificado de gatilhos INSERT.

    >0 = O número de gatilhos INSERT.

    TableIsFake

    Table

    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

    TableIsPinned

    Tabela

    A tabela está fixada para ser mantida no cache de dados.

    0 = Falso

    Esse recurso não tem suporte no SQL Server 2005 e em versões posteriores.

    TableTextInRowLimit

    Table

    Máximo de bytes permitidos para text in row.

    0 se a opção text in row não estiver definida.

    TableUpdateTrigger

    Table

    A tabela tem um gatilho UPDATE.

    > 1 = ID do primeiro gatilho com o tipo especificado.

    TableUpdateTriggerCount

    Table

    A tabela tem o número especificado de gatilhos UPDATE.

    > 0 = O número de gatilhos UPDATE.

    TableHasColumnSet

    Table

    A tabela tem um conjunto de colunas.

    0 = Falso

    1 = Verdadeiro

    Para obter mais informações, consulte Usar conjuntos de colunas.

Tipos de retorno

int

Exceções

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

Um usuário só pode exibir metadados de protegíveis de sua propriedade ou para os quais tenha recebido 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 Configuração de visibilidade de metadados.

Comentários

O Mecanismo de Banco de Dados entende que object_id está no contexto do banco de dados atual. Uma consulta que faz referência a um 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 master. O Mecanismo de Banco de Dados tentará retornar o valor de propriedade do object_id especificado naquele banco de dados, em vez do banco de dados especificado na consulta. A consulta retornará resultados incorretos porque a exibição vEmployee não está no banco de dados master.

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

OBJECTPROPERTY(view_id, 'IsIndexable') deve consumir recursos significativos do computador porque a avaliação da propriedade IsIndexable exige análise da definição, da normalização e da otimização parcial da exibição. 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 chave de índice não forem atendidos. Para obter mais informações, consulte CREATE INDEX (Transact-SQL).

OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') retornará um valor 1 (verdadeiro) quando pelo menos uma coluna de uma tabela for adicionada para indexação. Indexação de texto completo torna-se ativa para população assim que a primeira coluna é 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 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 usa a propriedade SchemaId para retornar todos os objetos que pertencem ao esquema Production.

USE AdventureWorks2012;
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

Consulte também

Referência

COLUMNPROPERTY (Transact-SQL)

funções de metadados (Transact-SQL)

OBJECTPROPERTYEX (Transact-SQL)

ALTER AUTHORIZATION (Transact-SQL)

TYPEPROPERTY (Transact-SQL)

sys.objects (Transact-SQL)