OBJECTPROPERTY (Transact-SQL)
Retorna informações sobre objetos de escopo de esquema no banco de dados atual. Para uma lista de objetos do escopo do 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.
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 de escopo de 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
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 = Verdadeiro
0 = Falso
CnstIsDisabled
Restrição
Restrição desabilitada.
1 = Verdadeiro
0 = Falso
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 usando as 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 UPDATE CASCADE.
1 = Verdadeiro
0 = Falso
ExecIsAfterTrigger
Gatilho
Gatilho AFTER.
1 = Verdadeiro
0 = Falso
ExecIsAnsiNullsOn
Função Transact-SQL, procedimento Transact-SQL, gatilho Transact-SQL, exibição
Configuração de ANSI_NULLS na criação.
1 = Verdadeiro
0 = Falso
ExecIsDeleteTrigger
Gatilho
Gatilho DELETE.
1 = Verdadeiro
0 = Falso
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 UPADTE é executada na tabela.
1 = Verdadeiro
0 = Falso
ExecIsInsertTrigger
Gatilho
Gatilho INSERT.
1 = Verdadeiro
0 = Falso
ExecIsInsteadOfTrigger
Gatilho
Gatilho INSTEAD OF.
1 = Verdadeiro
0 = Falso
ExecIsLastDeleteTrigger
Gatilho
Último gatilho acionado quando DELETE é executada 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 UPADTE é 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 na criação.
1 = Verdadeiro
0 = Falso
ExecIsStartup
Procedimento
Procedimento de inicialização.
1 = Verdadeiro
0 = Falso
ExecIsTriggerDisabled
Gatilho
Gatilho desabilitado.
1 = Verdadeiro
0 = Falso
ExecIsTriggerNotForRepl
Gatilho
Gatilho definido como NOT FOR REPLICATION.
1 = Verdadeiro
0 = Falso
ExecIsUpdateTrigger
Gatilho
Gatilho UPDATE.
1 = Verdadeiro
0 = Falso
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 é 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, incluindo colunas e restrições computadas, enquanto a tabela existir.
1 = Verdadeiro
0 = Falso
IsCheckCnst
Qualquer objeto de escopo de esquema
Restrição CHECK.
1 = Verdadeiro
0 = Falso
IsConstraint
Qualquer objeto de escopo de esquema
É uma restrição de coluna única CHECK, DEFAULT ou FOREIGN KEY em uma coluna ou tabela.
1 = Verdadeiro
0 = Falso
IsDefault
Qualquer objeto de escopo de esquema
Padrão de associação.
1 = Verdadeiro
0 = Falso
IsDefaultCnst
Qualquer objeto de escopo de esquema
Restrição DEFAULT.
1 = Verdadeiro
0 = Falso
IsDeterministic
Função, exibição
A propriedade determinística 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 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 de escopo de esquema
O objeto pode ser executado (exibição, procedimento, função ou gatilho).
1 = Verdadeiro
0 = Falso
IsExtendedProc
Qualquer objeto de escopo de esquema
Procedimento estendido.
1 = Verdadeiro
0 = Falso
IsForeignKey
Qualquer objeto de escopo de esquema
Restrição FOREIGN KEY.
1 = Verdadeiro
0 = Falso
IsIndexed
Tabela, exibição
A tabela ou exibição que tem um índice.
1 = Verdadeiro
0 = Falso
IsIndexable
Tabela, exibição
Tabela ou exibição na qual um índice pode ser criado.
1 = Verdadeiro
0 = Falso
IsInlineFunction
Função
Função embutida.
1 = Função embutida
0 = Função não embutida
IsMSShipped
Qualquer objeto de escopo de esquema
Objeto criado durante instalação do SQL Server.
1 = Verdadeiro
0 = Falso
IsPrimaryKey
Qualquer objeto de 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 de escopo de esquema
Procedimento.
1 = Verdadeiro
0 = Falso
IsQuotedIdentOn
Função Transact-SQL , procedimento, tabela Transact-SQL, gatilho, exibição, restrição CHECK, definição DEFAULT Transact-SQL
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 de escopo de esquema
Fila do Service Broker
1 = Verdadeiro
0 = Falso
IsReplProc
Qualquer objeto de escopo de esquema
Procedimento de replicação.
1 = Verdadeiro
0 = Falso
IsRule
Qualquer objeto de escopo de esquema
Regra associada.
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, 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 = Verdadeiro
0 = Falso
IsTable
Tabela
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 de escopo de esquema
Gatilho.
1 = Verdadeiro
0 = Falso
IsUniqueCnst
Qualquer objeto de escopo de esquema
Restrição UNIQUE.
1 = Verdadeiro
0 = Falso
IsUserTable
Tabela
Tabela definida pelo usuário.
1 = Verdadeiro
0 = Falso
IsView
Exibição
Exibição.
1 = Verdadeiro
0 = Falso
OwnerId
Qualquer objeto de escopo de esquema
Proprietário do objeto.
ObservaçãoO proprietário do esquema não é necessariamente o proprietário do objeto. Por exemplo, objetos filho (esses onde parent_object_id não é nulo) sempre retornarão a mesma ID do proprietário como o pai.Não nulo = A ID de usuário do banco de dados do proprietário do objeto.
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
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á em mesclagem.
1 = O índice de texto completo está em mesclagem.
TableFullTextBackgroundUpdateIndexOn
Tabela
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
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
A tabela tem controle de alterações de texto completo habilitado.
1 = TRUE
0 = FALSE
TableFulltextDocsProcessed
Tabela
Número de linhas processado desde o início de 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 = 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çãoEssa propriedade não monitora nem conta linhas excluídas.TableFulltextFailCount
Tabela
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
Tabela
Número de linhas que foram indexadas com texto completo com êxito.
TableFulltextKeyColumn
Tabela
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
Tabela
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
Tabela
0 = Inativo.
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 suspensa ou em pausa.
TableHasActiveFulltextIndex
Tabela
A tabela tem um índice de texto completo ativo.
1 = Verdadeiro
0 = Falso
TableHasCheckCnst
Tabela
A tabela tem uma restrição CHECK.
1 = Verdadeiro
0 = Falso
TableHasClustIndex
Tabela
A tabela tem um índice clusterizado.
1 = Verdadeiro
0 = Falso
TableHasDefaultCnst
Tabela
A tabela tem uma restrição DEFAULT.
1 = Verdadeiro
0 = Falso
TableHasDeleteTrigger
Tabela
A tabela tem um gatilho DELETE.
1 = Verdadeiro
0 = Falso
TableHasForeignKey
Tabela
A tabela tem uma restrição FOREIGN KEY.
1 = Verdadeiro
0 = Falso
TableHasForeignRef
Tabela
A tabela é referenciada por uma restrição FOREIGN KEY.
1 = Verdadeiro
0 = Falso
TableHasIdentity
Tabela
A tabela tem uma coluna de identidade.
1 = Verdadeiro
0 = Falso
TableHasIndex
Tabela
A tabela tem um índice de qualquer tipo.
1 = Verdadeiro
0 = Falso
TableHasInsertTrigger
Tabela
O objeto tem um gatilho INSERT.
1 = Verdadeiro
0 = Falso
TableHasNonclustIndex
Tabela
A tabela tem um índice não clusterizado.
1 = Verdadeiro
0 = Falso
TableHasPrimaryKey
Tabela
A tabela tem uma chave primária.
1 = Verdadeiro
0 = Falso
TableHasRowGuidCol
Tabela
A tabela tem um ROWGUIDCOL para uma coluna uniqueidentifier.
1 = Verdadeiro
0 = Falso
TableHasTextImage
Tabela
A tabela tem uma coluna text, ntext ou image.
1 = Verdadeiro
0 = Falso
TableHasTimestamp
Tabela
A tabela tem uma coluna timestamp.
1 = Verdadeiro
0 = Falso
TableHasUniqueCnst
Tabela
Tabela tem uma restrição UNIQUE.
1 = Verdadeiro
0 = Falso
TableHasUpdateTrigger
Tabela
O objeto tem um gatilho UPDATE.
1 = Verdadeiro
0 = Falso
TableHasVarDecimalStorageFormat
Tabela
A tabela está habilitada para o formato de armazenamento vardecimal.
1 = Verdadeiro
0 = Falso
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 = Verdadeiro
0 = Falso
TableIsLockedOnBulkLoad
Tabela
A tabela está bloqueada devido a um trabalho de bcp ou BULK INSERT.
1 = Verdadeiro
0 = Falso
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 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 = Falso
1 = Verdadeiro
Para obter mais informações, consulte Usando conjuntos de colunas.
Tipos de retorno
int
Exceções
Retorna NULL no caso de erro ou se um 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 e Solucionando problemas 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 retorna resultados incorretos porque a exibição vEmployee não está no banco de dados master.
USE master;
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks.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, 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, 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 AdventureWorks.
USE AdventureWorks;
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 AdventureWorks;
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 AdventureWorks;
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