OBJECTPROPERTY (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric
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.
Convenções de sintaxe de 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 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 (10.0.x) 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 (10.0.x) 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 (10.0.x) 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 (10.0.x) 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 (10.0.x) 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 (10.0.x) 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 (10.0.x) 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 (10.0.x) e posterior. Número de linhas que foram indexadas com texto completo com êxito. |
TableFulltextKeyColumn | Tabela | Aplica-se a: SQL Server 2008 (10.0.x) 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 (10.0.x) 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 (10.0.x) 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 (10.0.x) 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'AdventureWorks2022.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 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. 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 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: 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 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 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)