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
PDW (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 ver a sintaxe do Transact-SQL para o SQL Server 2014 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)
Comentários
Enviar e exibir comentários de