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';