Partilhar via


OBJECT_ID (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

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 (Linguagem de Definição de Dados), não podem ser consultados usando OBJECT_ID. Para objetos que não são encontrados na exibição do catálogo sys.objects , obtenha os números de identificação do 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' ] )

Argumentos

N'object_name'

O objeto a ser usado. object_name é varchar ou nvarchar. Um valor varchar de object_name é convertido implicitamente 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 caso de erro.

Um usuário só pode exibir os metadados de protegíveis que o usuário possui ou sobre os 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 sobre 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. Você deve sempre seguir as 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

Os exemplos de código do Transact-SQL deste artigo usa o banco de dados de exemplo AdventureWorks2022 ou AdventureWorksDW2022, que pode ser baixado da home page Microsoft SQL Server Samples and Community Projects.

R. Retornar o 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 existe um objeto

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. Use 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.

Ao usar as funções DB_ID Transact-SQL e OBJECT_ID retornar um valor de parâmetro, sempre verifique se uma ID válida é 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 retornarão NULL. A sys.dm_db_index_operational_stats função é interpretada NULL como um valor curinga 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 o 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';