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.

Objetos que não têm escopo de esquema, como gatilhos DDL (Data Definition Language), não podem ser consultados usando OBJECT_IDo . Para objetos que não são encontrados na exibição de catálogo sys.objects , obtenha os números de identificação de objeto consultando a exibição de 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

N'object_name'

O objeto a ser usado. object_name é varchar ou nvarchar. Um valor varchar de object_name é implicitamente convertido em nvarchar. A especificação dos nomes de banco de dados e esquema é opcional.

N'object_type'

O tipo de objeto com escopo de esquema. object_type é varchar ou nvarchar. Um valor varchar de object_type é implicitamente convertido 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 espacial, OBJECT_ID retorna NULL.

Retorna NULL em erro.

Um usuário só pode exibir os metadados de protegíveis que o usuário possui ou nos quais o usuário recebe permissão. Isso significa que as funções internas emissoras de metadados, como OBJECT_ID as que podem retornar NULL se o usuário não tiver nenhuma permissão no 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. Você deve sempre seguir funções internas com parênteses.

Quando um nome de tabela temporário é especificado, o nome do banco de dados deve vir antes do nome da tabela temporária, a menos que o banco de dados atual seja tempdb. Por exemplo:

SELECT OBJECT_ID('tempdb..#mytemptable');

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

Exemplos

Este artigo requer o banco de dados de exemplo AdventureWorks2022, que pode ser baixado na home page Microsoft SQL Server Samples and Community Projects.

R. Retornar a ID do objeto para um objeto especificado

O exemplo seguinte 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. Verificar 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 DROP TABLE instrução não será executada.

USE AdventureWorks2022;
GO

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

C. Usar 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.

Quando você usar as funções DB_ID Transact-SQL e OBJECT_ID retornar um valor de parâmetro, sempre certifique-se de que uma ID válida seja retornada. Se o nome do banco de dados ou do objeto não puder ser encontrado, como quando eles não existem ou estão escritos incorretamente, ambas as funções retornam NULL. A sys.dm_db_index_operational_stats função é interpretada como um valor curinga NULL que especifica todos os bancos de dados ou todos os objetos. Como essa operação pode ser não intencional, o exemplo nesta seção demonstra a maneira segura de determinar IDs de banco de dados e 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. Retornar a ID do objeto para 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';