OBJECT_ID (Transact-SQL)

 

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzuresìAzure SQL Data WarehousesìParallel Data Warehouse

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

System_CAPS_ICON_important.jpg 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 nel Sys. Objects vista del catalogo, ottenere il numero di identificazione eseguendo una query sulla vista del catalogo appropriata. Ad esempio, per restituire il numero di identificazione di oggetto di un trigger DDL, utilizzare SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog``'.

Topic link icon Convenzioni della sintassi Transact-SQL

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
  
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]   
  object_name' [ ,'object_type' ] )  

' object_name '
Oggetto da utilizzare. object_name è varchar o nvarchar. Se object_name è varchar, viene convertito implicitamente 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 implicitamente in nvarchar. Per un elenco di tipi di oggetti, vedere il tipo colonna (Transact-SQL) di Sys. Objects.

int

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.

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 viene specificato un nome di tabella temporanea, il nome del database deve precedere il nome della tabella temporanea, a meno che il database corrente è 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 in (Transact-SQL).

A. Restituzione dell'ID oggetto per un oggetto specificato

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

USE master;  
GO  
SELECT OBJECT_ID(N'AdventureWorks2012.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 AdventureWorks2012;  
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 restituisce le informazioni per tutti gli indici e le partizioni di Person.Address tabella il AdventureWorks2012 database utilizzando il DM db_index_operational_stats (funzione).

System_CAPS_ICON_important.jpg Importante


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. Il DM db_index_operational_stats funzione interpreta NULL come 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'AdventureWorks2012');  
SET @object_id = OBJECT_ID(N'AdventureWorks2012.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  

Unità d: restituzione dell'ID di oggetto per un oggetto specificato

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

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

Funzioni per i metadati (Transact-SQL)
Sys. Objects (Transact-SQL)
DM db_index_operational_stats (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
Object_name (Transact-SQL)

Aggiunte alla community

AGGIUNGI
Mostra: