OBJECT_ID (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Restituisce il numero di identificazione di oggetto di database di un oggetto con ambito schema.

Gli oggetti non con ambito schema, ad esempio i trigger DDL (Data Definition Language), non possono essere sottoposti a query tramite OBJECT_ID. Per gli oggetti non trovati nella vista del catalogo sys.objects , ottenere i numeri di identificazione dell'oggetto eseguendo una query sulla vista del catalogo appropriata. Ad esempio, per restituire il numero di identificazione oggetto di un trigger DDL, usare SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

N'object_name'

Oggetto da utilizzare. object_name è varchar o nvarchar. Un valore varchar di object_name viene convertito in modo implicito in nvarchar. L'indicazione dei nomi dello schema e del database è facoltativa.

N'object_type'

Tipo di oggetto con ambito schema. object_type è varchar o nvarchar. Un valore varchar di object_type viene convertito in modo implicito in nvarchar. Per un elenco dei tipi di oggetti, vedere la colonna type in sys.objects (Transact-SQL).

Tipi restituiti

int

Eccezioni

Per un indice spaziale, restituisce OBJECT_ID NULL.

Restituisce NULL in caso di errore.

Un utente può visualizzare solo i metadati delle entità a protezione diretta di cui l'utente è proprietario o su cui viene concessa l'autorizzazione. Ciò significa che le funzioni predefinite che generano metadati, ad OBJECT_ID esempio potrebbero restituire NULL se l'utente non dispone di alcuna autorizzazione per l'oggetto. Per altre informazioni, vedere Metadata Visibility Configuration.

Osservazioni:

Se il parametro per una funzione di sistema è facoltativo, vengono utilizzati il database, il computer host, l'utente del server o l'utente del database correnti. È sempre necessario seguire le funzioni predefinite con parentesi.

Quando si specifica un nome di tabella temporaneo, il nome del database deve precedere il nome della tabella temporanea, a meno che il database corrente non sia tempdb. Ad esempio:

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

Le funzioni di sistema possono essere usate nell'elenco di selezione, nella WHERE clausola e in qualsiasi punto in cui è consentita un'espressione. Per altre informazioni, vedere Espressioni (Transact-SQL) e WHERE (Transact-SQL).

Esempi

Gli esempi di codice Transact-SQL in questo articolo utilizzano il database campione AdventureWorks2022 o AdventureWorksDW2022, che è possibile scaricare dalla home page di Esempi di Microsoft SQL Server e progetti collettivi.

R. Restituire l'ID oggetto per un oggetto specificato

Nell'esempio seguente viene restituito l'ID oggetto per la tabella Production.WorkOrder nel database AdventureWorks2022.

USE master;
GO

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

B. Verificare che esista un oggetto

Nell'esempio seguente viene controllata l'esistenza di una tabella specificata mediante la verifica della presenza dell'ID oggetto. Se la tabella esiste, verrà eliminata. Se la tabella non esiste, l'istruzione DROP TABLE non viene eseguita.

USE AdventureWorks2022;
GO

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

C. Usare OBJECT_ID per specificare il valore di un parametro di funzione di sistema

Nell'esempio seguente vengono restituite informazioni per tutti gli indici e le partizioni della tabella Person.Address del database AdventureWorks2022 usando la funzione sys.dm_db_index_operational_stats.

Nota

Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Quando si usano le funzioni DB_ID Transact-SQL e OBJECT_ID per restituire un valore di parametro, assicurarsi sempre che venga restituito un ID valido. Se non è possibile trovare il nome del database o dell'oggetto, ad esempio quando non esistono o non sono stati digitati correttamente, entrambe le funzioni restituiscono NULL. La sys.dm_db_index_operational_stats funzione interpreta NULL come valore jolly che specifica tutti i database o tutti gli oggetti. Poiché questa operazione può essere involontaria, nell'esempio riportato in questa sezione viene illustrato il modo sicuro per determinare gli ID di database e oggetti.

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

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

D. Restituire l'ID oggetto per un oggetto specificato

Nell'esempio seguente viene restituito l'ID oggetto per la FactFinance tabella nel database AdventureWorksPDW2022 .

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