OBJECT_ID (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Retorna o número de identificação do banco de dados do objeto de escopo de esquema.

Importante

Os objetos que não são de escopo de esquema, como gatilhos DDL, não podem ser consultados com o uso de OBJECT_ID. Para objetos não encontrados na exibição do catálogo sys.objects, obtenha os números de identificação de objeto consultando a exibição do catálogo apropriada. Por exemplo, para retornar o número de identificação de objeto de um gatilho DDL, use SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog``'.

Convenções de sintaxe de Transact-SQL

Sintaxe

OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]   
  object_name' [ ,'object_type' ] )  

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

'object_name'
É o objeto a ser usado. object_name é varchar ou nvarchar. Se object_name for varchar, ele será convertido implicitamente em nvarchar. A especificação dos nomes de banco de dados e esquema é opcional.

'object_type'
É o tipo do objeto no escopo do esquema. object_type é varchar ou nvarchar. Se object_type for varchar, ele será convertido implicitamente em nvarchar. Para obter uma lista de tipos de objeto, confira a coluna type em sys.objects (Transact-SQL).

Tipos de retorno

int

Exceções

Para um índice de espaço, OBJECT_ID retorna NULL.

Retorna NULL em caso de erro.

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

Comentários

Quando o parâmetro para uma função de sistema for opcional, o banco de dados atual, o computador host, o usuário do servidor ou o usuário do banco de dados será presumido. As funções internas sempre devem ser seguidas por parênteses.

Quando uma tabela temporária é especificada, o nome do banco de dados deve vir antes do nome da tabela temporária, a menos que o banco de dados seja tempdb. Por exemplo: SELECT OBJECT_ID('tempdb..#mytemptable').

As funções de sistema podem ser usadas na lista de seleção, na cláusula WHERE e em qualquer local onde uma expressão for permitida. Para obter mais informações, confira Expressões (Transact-SQL) e WHERE (Transact-SQL).

Exemplos

a. Retornando a ID de um objeto especificado

O exemplo a seguir retorna a ID de objeto para a tabela Production.WorkOrder do banco de dados AdventureWorks2022.

USE master;  
GO  
SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';  
GO  

B. Verificando se um objeto existe

O exemplo a seguir confirma a existência de uma tabela especificada ao verificar se ela tem uma ID de objeto. Se a tabela existir, ela será excluída. Se a tabela não existir, a instrução DROP TABLE não será executada.

USE AdventureWorks2022;  
GO  
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL  
DROP TABLE dbo.AWBuildVersion;  
GO  

C. Usando OBJECT_ID para especificar o valor de um parâmetro de função do sistema

O exemplo a seguir retorna informações de todos os índices e partições da tabela Person.Address do banco de dados AdventureWorks2022 usando a função sys.dm_db_index_operational_stats.

Observação

Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

Importante

Quando você está usando as funções DB_ID e OBJECT_ID do Transact-SQL para retornar um valor de parâmetro, sempre confirme se é retornada uma ID válida. Se o banco de dados ou nome de objeto não puder ser encontrado, por não existir ou por estar escrito incorretamente, ambas as funções retornarão NULL. A função sys.dm_db_index_operational_stats interpreta NULL como um valor de curinga que especifica todos os bancos de dados ou todos os objetos. Como pode se tratar de uma operação não intencional, os exemplos nesta seção demonstram a maneira segura de determinar a identificação do banco de dados e do objeto.

DECLARE @db_id INT;  
DECLARE @object_id INT;  
SET @db_id = DB_ID(N'AdventureWorks2022');  
SET @object_id = OBJECT_ID(N'AdventureWorks2022.Person.Address');  
IF @db_id IS NULL   
  BEGIN;  
    PRINT N'Invalid database';  
  END;  
ELSE IF @object_id IS NULL  
  BEGIN;  
    PRINT N'Invalid object';  
  END;  
ELSE  
  BEGIN;  
    SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);  
  END;  
GO  

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

D: retornando a ID de um objeto especificado

O exemplo a seguir retorna a ID de objeto da tabela FactFinance no banco de dados AdventureWorksPDW2022.

SELECT OBJECT_ID('AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';  

Consulte Também

funções de metadados (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_NAME (Transact-SQL)