OBJECT_ID (Transact-SQL)
Si applica a: SQL Server Azure SQL Database
Istanza gestita di SQL di Azure Azure Synapse
Analytics Analytics
Platform System (PDW)
Restituisce il numero di identificazione di oggetto di database di un oggetto con ambito schema.
Importante
Gli oggetti senza ambito schema, ad esempio i trigger DDL, non possono essere soggetti a query tramite OBJECT_ID. Per gli oggetti che non si trovano nella visualizzazione 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 di sintassi Transact-SQL
Sintassi
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
Nota
Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.
Argomenti
'object_name'
Oggetto da utilizzare. object_name è varchar o nvarchar. Se object_name è varchar viene convertito in modo implicito in nvarchar. L'indicazione dei nomi dello schema e del database è facoltativa.
'object_type'
Tipo di oggetto a livello di ambito dello schema. object_type è varchar o nvarchar. Se object_type è varchar 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, OBJECT_ID restituisce NULL.
Restituisce Null in caso di errore.
Un utente può visualizzare esclusivamente i metadati delle entità a sicurezza diretta di cui è proprietario o per cui ha ricevuto un'autorizzazione. Di conseguenza, le funzioni predefinite di creazione dei metadati come OBJECT_ID possono 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. Le funzioni predefinite devono essere sempre seguite da parentesi.
Quando si specifica il nome di una tabella temporanea, questo deve essere preceduto dal nome del database, a meno che il database corrente sia tempdb. Ad esempio: SELECT OBJECT_ID('tempdb..#mytemptable')
.
È possibile utilizzare funzioni di sistema nell'elenco di selezione, nella clausola WHERE e in tutti i casi in cui è consentita un'espressione. Per altre informazioni, vedere Espressioni (Transact-SQL) e WHERE (Transact-SQL).
Esempi
R. Restituzione dell'ID oggetto per un oggetto specificato
Nell'esempio seguente viene restituito l'ID oggetto per la Production.WorkOrder
tabella nel database AdventureWorks2022.
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2022.Production.WorkOrder') AS 'Object ID';
GO
B. Verifica dell'esistenza di 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 verrà eseguita.
USE AdventureWorks2022;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO
C. Utilizzo di OBJECT_ID per specificare il valore di un parametro di una funzione di sistema
Nell'esempio seguente vengono restituite informazioni per tutti gli indici e le partizioni della Person.Address
tabella nel database AdventureWorks2022 usando la funzione sys.dm_db_index_operational_stats .
Nota
Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
Importante
Quando si utilizzano le funzioni DB_ID e OBJECT_ID di Transact-SQL per restituire un valore di parametro, verificare sempre che venga restituito un ID valido. Se risulta impossibile trovare il nome del database o dell'oggetto, ad esempio quando tali nomi non esistono o sono stati immessi con un'ortografia errata, entrambe le funzioni restituiranno NULL. La funzione sys.dm_db_index_operational_stats interpreta NULL come un valore di carattere jolly che specifica tutti i database o tutti gli oggetti. Poiché può trattarsi di un'operazione accidentale, gli esempi riportati in questa sezione dimostrano la procedura sicura 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. Restituzione dell'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';
Vedere anche
Funzioni per i metadati (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_NAME (Transact-SQL)
Commenti e suggerimenti
Invia e visualizza il feedback per