Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di analisi (PDW)
Endpoint di analisi SQL in Microsoft Fabric
Magazzino in Microsoft Fabric
Database SQL in Microsoft Fabric
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_IDNULL.
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 in questo articolo usano il database di esempio AdventureWorks2025 o AdventureWorksDW2025, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects.
R. Restituire l'ID oggetto per un oggetto specificato
Nell'esempio seguente viene restituito l'ID oggetto per la tabella Production.WorkOrder nel database AdventureWorks2025.
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 AdventureWorks2025 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';