OBJECT_ID (Transact-SQL)
Aplica-se a: SQL Server
Banco de Dados
SQL do Azure Instância Gerenciada de SQL
do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics
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' ] )
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 é 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';