Condividi tramite


OBJECT_ID (Transact-SQL)

Data aggiornamento: 17 luglio 2006

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

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

ms190328.note(it-it,SQL.90).gifImportante:
Non è possibile utilizzare OBJECT_ID per eseguire query su oggetti non definiti a livello di ambito di schema, ad esempio i trigger DDL. Per gli oggetti non presenti nella vista del catalogo sys.objects è possibile ottenere il numero di identificazione mediante l'esecuzione di una query sulla vista del catalogo appropriata. Per ottenere, ad esempio, la restituzione del numero di identificazione dell'oggetto di un trigger DDL, utilizzare SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'.

Sintassi

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

Argomenti

  • 'object_name'
    Oggetto da utilizzare. object_name è di tipo varchar o nvarchar. Se object_name è di tipo varchar, viene convertito in modo implicito in nvarchar. L'indicazione dei nomi dello schema e del database è facoltativa.
  • 'object_type'
    Tipo di oggetto con ambito schema. object_type è di tipo varchar o nvarchar. Se object_type è di tipo 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

Restituisce NULL in caso di errore.

In SQL Server 2005 un utente può visualizzare esclusivamente i metadati delle entità a protezione 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 ulteriori informazioni, vedere Configurazione della visibilità dei metadati e Risoluzione dei problemi relativi alla visibilità dei metadati.

Osservazioni

Se il parametro per una funzione di sistema è facoltativo, viene utilizzato il database, il computer host, l'utente del server o l'utente del database corrente. 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. 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 ulteriori informazioni, vedere Espressioni (Transact-SQL) e WHERE (Transact-SQL).

Esempi

A. Restituzione dell'ID oggetto per un oggetto specificato

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

USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks.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 della tabella. Se la tabella esiste, verrà eliminata. Se la tabella non esiste, l'istruzione DROP TABLE non verrà eseguita.

USE AdventureWorks;
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 tabella Person.Address del database AdventureWorks utilizzando la funzione sys.dm_db_index_operational_stats.

ms190328.note(it-it,SQL.90).gifImportante:
Quando si utilizzano le funzioni Transact-SQL DB_ID e OBJECT_ID 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 non intenzionale, negli esempi di questa sezione viene illustrato come determinare ID di oggetto e di database in modo affidabile.
DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks');
SET @object_id = OBJECT_ID(N'AdventureWorks.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

Vedere anche

Riferimento

Funzioni per i metadati (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_db_index_operational_stats
OBJECT_DEFINITION (Transact-SQL)
OBJECT_NAME (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

17 luglio 2006

Nuovo contenuto:
  • Aggiunta della sezione "Eccezioni".

14 aprile 2006

Contenuto aggiornato:
  • Correzione dell'esempio C.