Condividi tramite


OBJECTPROPERTYEX (Transact-SQL)

Data aggiornamento: 12 dicembre 2006

Restituisce informazioni sugli oggetti con ambito schema nel database corrente. Per un elenco di questi oggetti, vedere sys.objects (Transact-SQL). La funzione OBJECTPROPERTYEX non può essere utilizzata per oggetti non definiti a livello di ambito dello schema, ad esempio notifiche degli eventi e trigger DDL (Data Definition Language).

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

OBJECTPROPERTYEX ( id , property )

Argomenti

  • id
    Espressione che rappresenta l'ID dell'oggetto nel database corrente. id è di tipo int e si presuppone che sia un oggetto con ambito schema nel contesto di database corrente.
  • property
    Espressione che contiene le informazioni da restituire per l'oggetto con l'ID specificato. Il tipo restituito è sql_variant. Nella tabella seguente viene indicato il tipo di dati di base per ogni valore di questo argomento.

    [!NOTA] Se non specificato diversamente, viene restituito NULL quando property non è un nome di proprietà valido, id non è un ID di oggetto valido, id è un tipo di oggetto non supportato per l'argomento property specificato oppure il chiamante non dispone delle autorizzazioni necessarie per visualizzare i metadati dell'oggetto.

    Nome proprietà

Tipi restituiti

sql_variant

Eccezioni

Restituisce NULL in caso di errore o se un chiamante non dispone dell'autorizzazione necessaria per visualizzare l'oggetto.

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 OBJECTPROPERTYEX 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

In Motore di database si presuppone che l'oggetto specificato in object_id si trovi nel contesto di database corrente. Una query in cui viene fatto riferimento a un object_id in un altro database restituisce NULL oppure risultati non corretti. Nella query seguente, ad esempio, il contesto di database corrente è il database master. Motore di database tenterà di restituire il valore della proprietà per l'oggetto con il valore object_id specificato in tale database anziché nel database specificato nella query. La query restituisce risultati non corretti perché la vista vEmployee non si trova nel database master.

USE master;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO

OBJECTPROPERTYEX (view_id**,'IsIndexable'**) può richiedere una quantità elevata di risorse del sistema perché la valutazione della proprietà IsIndexable richiede l'analisi della definizione, della normalizzazione e dell'ottimizzazione parziale della vista. Sebbene la proprietà IsIndexable identifichi tabelle o viste che è possibile indicizzare, la creazione effettiva dell'indice può avere esito negativo se non vengono soddisfatti determinati requisiti riguardanti la chiave di indice. Per ulteriori informazioni, vedere CREATE INDEX (Transact-SQL).

OBJECTPROPERTYEX (table_id**,'TableHasActiveFulltextIndex'**) restituisce il valore 1 (true) quando almeno una colonna di una tabella viene aggiunta per l'indicizzazione. L'indicizzazione full-text risulta attiva per il popolamento non appena viene aggiunta la prima colonna per l'indicizzazione.

Il set di risultati è soggetto ad alcune restrizioni riguardanti la visibilità dei metadati. Per ulteriori informazioni, vedere Configurazione della visibilità dei metadati.

Esempi

A. Ricerca del tipo di base di un oggetto

Nell'esempio seguente viene creato un oggetto SYNONYM MyEmployeeTable per la tabella Employee nel database AdventureWorks e quindi viene restituito il tipo di base di SYNONYM.

USE AdventureWorks;
GO
CREATE SYNONYM MyEmployeeTable FOR HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX ( object_id(N'MyEmployeeTable'), N'BaseType')AS [Base Type];
GO

Nel set di risultati viene indicato che il tipo di base dell'oggetto sottostante, ovvero la tabella Employee, è una tabella utente.

Base Type 
-------- 
U 

B. Restituzione del valore di una proprietà

Nell'esempio seguente viene restituito il numero di trigger UPDATE per la tabella specificata.

USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'HumanResources.Employee'), N'TABLEUPDATETRIGGERCOUNT');
GO

C. Ricerca delle tabelle con vincolo FOREIGN KEY

Nell'esempio seguente viene utilizzata la proprietà TableHasForeignKey per restituire tutte le tabelle con vincolo FOREIGN KEY.

USE AdventureWorks;
GO
SELECT name, object_id, schema_id, type_desc
FROM sys.objects 
WHERE OBJECTPROPERTYEX(object_id, N'TableHasForeignKey') = 1
ORDER BY name;
GO

Vedere anche

Riferimento

CREATE SYNONYM (Transact-SQL)
Funzioni per i metadati (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)
OBJECT_NAME (Transact-SQL)
sys.objects (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)

Altre risorse

Separazione fra schema e utente

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Nuovo contenuto:
  • Aggiunta della proprietà TableHasVarDecimalStorageFormat disponibile nel Service Pack 2.

17 luglio 2006

Nuovo contenuto:
  • Aggiunta della sezione "Eccezioni".

5 dicembre 2005

Contenuto modificato
  • Correzione della definizione delle proprietà IsTableFunction e IsScalarFunction.
  • Modifica dell'esempio.