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).
Convenzioni 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
Cronologia modifiche
Versione | Cronologia |
---|---|
12 dicembre 2006 |
|
17 luglio 2006 |
|
5 dicembre 2005 |
|