OBJECTPROPERTY (Transact-SQL)
Restituisce informazioni sugli oggetti con ambito schema nel database corrente. Per un elenco degli oggetti con ambito schema, vedere sys.objects (Transact-SQL). Questa funzione non può essere utilizzata per gli oggetti che non sono definiti a livello di ambito schema, ad esempio i trigger DDL (Data Definition Language) e le notifiche di eventi.
Sintassi
OBJECTPROPERTY ( id , property )
Argomenti
id
Espressione che rappresenta l'ID dell'oggetto nel database corrente. id è di tipo int e viene considerato un oggetto con ambito schema nel contesto del database corrente.property
Espressione che rappresenta le informazioni da restituire per l'oggetto specificato dall'argomento id. I possibili valori per l'argomento property sono i seguenti.[!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à
Tipo di oggetto
Descrizione e valori restituiti
CnstIsClustKey
Vincolo
Vincolo PRIMARY KEY con un indice cluster.
1 = true
0 = false
CnstIsColumn
Vincolo
Vincolo CHECK, DEFAULT o FOREIGN KEY su una singola colonna.
1 = true
0 = false
CnstIsDeleteCascade
Vincolo
Vincolo FOREIGN KEY con l'opzione ON DELETE CASCADE.
1 = true
0 = false
CnstIsDisabled
Vincolo
Vincolo disattivato.
1 = true
0 = false
CnstIsNonclustKey
Vincolo
Vincolo PRIMARY KEY o UNIQUE con un indice non cluster.
1 = true
0 = false
CnstIsNotRepl
Vincolo
Vincolo definito con le parole chiave NOT FOR REPLICATION.
1 = true
0 = false
CnstIsNotTrusted
Vincolo
Vincolo attivato senza alcuna verifica delle righe esistenti e che pertanto potrebbe non essere mantenuto attivo in tutte le righe.
1 = true
0 = false
CnstIsUpdateCascade
Vincolo
Vincolo con l'opzione ON UPDATE CASCADE.
1 = true
0 = false
ExecIsAfterTrigger
Trigger
Trigger AFTER
1 = true
0 = false
ExecIsAnsiNullsOn
Funzione Transact-SQL, procedura Transact-SQL, trigger Transact-SQL, vista
Impostazione di ANSI_NULLS in fase di creazione.
1 = true
0 = false
ExecIsDeleteTrigger
Trigger
Trigger DELETE.
1 = true
0 = false
ExecIsFirstDeleteTrigger
Trigger
Primo trigger attivato quando si esegue un'istruzione DELETE sulla tabella.
1 = true
0 = false
ExecIsFirstInsertTrigger
Trigger
Primo trigger attivato quando si esegue un'istruzione INSERT sulla tabella.
1 = true
0 = false
ExecIsFirstUpdateTrigger
Trigger
Primo trigger attivato quando si esegue un'istruzione UPDATE sulla tabella.
1 = true
0 = false
ExecIsInsertTrigger
Trigger
Trigger INSERT.
1 = true
0 = false
ExecIsInsteadOfTrigger
Trigger
Trigger INSTEAD OF.
1 = true
0 = false
ExecIsLastDeleteTrigger
Trigger
Ultimo trigger attivato quando si esegue un'istruzione DELETE sulla tabella.
1 = true
0 = false
ExecIsLastInsertTrigger
Trigger
Ultimo trigger attivato quando si esegue un'istruzione INSERT sulla tabella.
1 = true
0 = false
ExecIsLastUpdateTrigger
Trigger
Ultimo trigger attivato quando si esegue un'istruzione UPDATE sulla tabella.
1 = true
0 = false
ExecIsQuotedIdentOn
Funzione Transact-SQL, procedura Transact-SQL, trigger Transact-SQL, vista
Impostazione di QUOTED_IDENTIFIER in fase di creazione.
1 = true
0 = false
ExecIsStartup
Procedura
Procedura di avvio.
1 = true
0 = false
ExecIsTriggerDisabled
Trigger
Trigger disattivato.
1 = true
0 = false
ExecIsTriggerNotForRepl
Trigger
Trigger definito come NOT FOR REPLICATION.
1 = true
0 = false
ExecIsUpdateTrigger
Trigger
Trigger UPDATE.
1 = true
0 = false
HasAfterTrigger
Tabella, vista
Tabella o vista che include un trigger AFTER.
1 = true
0 = false
HasDeleteTrigger
Tabella, vista
Tabella o vista che include un trigger DELETE.
1 = true
0 = false
HasInsertTrigger
Tabella, vista
Tabella o vista che include un trigger INSERT.
1 = true
0 = false
HasInsteadOfTrigger
Tabella, vista
Tabella o vista che include un trigger INSTEAD OF.
1 = true
0 = false
HasUpdateTrigger
Tabella, vista
Tabella o vista che include un trigger UPDATE.
1 = true
0 = false
IsAnsiNullsOn
Funzione Transact-SQL, procedura Transact-SQL, tabella, trigger Transact-SQL, vista
L'opzione ANSI NULLS per la tabella è impostata su ON, ovvero tutti i confronti di un valore Null restituiscono UNKNOWN. Questa impostazione viene applicata a tutte le espressioni nella definizione di tabella, compresi i vincoli e le colonne calcolate, per tutto il tempo in cui la tabella è disponibile.
1 = true
0 = false
IsCheckCnst
Qualsiasi oggetto con ambito schema
Vincolo CHECK
1 = true
0 = false
IsConstraint
Qualsiasi oggetto con ambito schema
Vincolo CHECK, DEFAULT o FOREIGN KEY a colonna singola su una colonna o tabella.
1 = true
0 = false
IsDefault
Qualsiasi oggetto con ambito schema
Valore predefinito associato.
1 = true
0 = false
IsDefaultCnst
Qualsiasi oggetto con ambito schema
Vincolo DEFAULT.
1 = true
0 = false
IsDeterministic
Funzione, vista
Proprietà deterministica della funzione o della vista.
1 = deterministica
0 = non deterministica
IsEncrypted
Funzione Transact-SQL, procedura Transact-SQL, tabella, trigger Transact-SQL, vista
Indica che il testo originale dell'istruzione del modulo è stato convertito in un formato offuscato. L'output dell'offuscamento non è visibile direttamente nelle viste del catalogo in SQL Server 2005. Gli utenti che non hanno accesso a tabelle di sistema o file del database non possono recuperare il testo offuscato. Il testo è tuttavia disponibile per gli utenti con privilegi di accesso a tabelle di sistema attraverso la porta DAC oppure con privilegi di accesso diretto a file del database. Gli utenti in grado di collegare un debugger al processo del server possono inoltre recuperare la procedura originale dalla memoria in fase di esecuzione.
1 = Crittografato
0 = Non crittografato
Tipo di dati di base: int
IsExecuted
Qualsiasi oggetto con ambito schema
L'oggetto può essere eseguito (vista, procedura, funzione o trigger).
1 = true
0 = false
IsExtendedProc
Qualsiasi oggetto con ambito schema
Procedura estesa.
1 = true
0 = false
IsForeignKey
Qualsiasi oggetto con ambito schema
Vincolo FOREIGN KEY.
1 = true
0 = false
IsIndexed
Tabella, vista
Tabella o vista contenente un indice.
1 = true
0 = false
IsIndexable
Tabella, vista
Tabella o vista in cui è possibile creare un indice.
1 = true
0 = false
IsInlineFunction
Funzione
Funzione inline.
1 = funzione inline
0 = funzione non inline
IsMSShipped
Qualsiasi oggetto con ambito schema
Oggetto creato durante l'installazione di SQL Server.
1 = true
0 = false
IsPrimaryKey
Qualsiasi oggetto con ambito schema
Vincolo PRIMARY KEY.
1 = true
0 = false
NULL = non è una funzione oppure l'ID di oggetto non è valido.
IsProcedure
Qualsiasi oggetto con ambito schema
Procedura.
1 = true
0 = false
IsQuotedIdentOn
Funzione Transact-SQL, procedura Transact-SQL, tabella, trigger Transact-SQL, vista, vincolo CHECK, definizione DEFAULT
L'identificatore tra virgolette per la tabella è impostato su ON, ovvero gli identificatori sono racchiusi tra virgolette doppie in tutte le espressioni alle quali viene fatto riferimento nella definizione dell'oggetto.
1 = ON
0 = OFF
IsQueue
Qualsiasi oggetto con ambito schema
Coda di Service Broker
1 = true
0 = false
IsReplProc
Qualsiasi oggetto con ambito schema
Procedura di replica.
1 = true
0 = false
IsRule
Qualsiasi oggetto con ambito schema
Regola associata.
1 = true
0 = false
IsScalarFunction
Funzione
Funzione con valori scalari.
1 = Funzione con valori scalari
0 = Funzione con valori non scalari
IsSchemaBound
Funzione, vista
Funzione associata a uno schema, o vista creata con SCHEMABINDING.
1 = associata a uno schema
0 = non associata a uno schema
IsSystemTable
Tabella
Tabella di sistema.
1 = true
0 = false
IsTable
Tabella
Tabella.
1 = true
0 = false
IsTableFunction
Funzione
Funzione valutata a livello di tabella.
1 = Funzione valutata a livello di tabella
0 = Funzione valutata non a livello di tabella
IsTrigger
Qualsiasi oggetto con ambito schema
Trigger.
1 = true
0 = false
IsUniqueCnst
Qualsiasi oggetto con ambito schema
Vincolo UNIQUE.
1 = true
0 = false
IsUserTable
Tabella
Tabella definita dall'utente.
1 = true
0 = false
IsView
Vista
Vista.
1 = true
0 = false
OwnerId
Qualsiasi oggetto con ambito schema
Proprietario dell'oggetto.
NotaIl proprietario dello schema non è necessariamente il proprietario dell'oggetto. Ad esempio, gli oggetti figlio, in cui parent_object_id è non Null, restituiranno sempre lo stesso ID proprietario del padre.Valore non Null = ID utente del database per il proprietario dell'oggetto.
TableDeleteTrigger
Tabella
La tabella include un trigger DELETE.
>1 = ID del primo trigger del tipo specificato.
TableDeleteTriggerCount
Tabella
La tabella include il numero di trigger DELETE specificato.
>0 = numero di trigger DELETE.
TableFullTextMergeStatus
Tabella
Indica se una tabella dispone di un indice full-text su cui è attualmente in corso un'operazione di unione.
0 = la tabella non dispone di un indice full-text o sull'indice full-text non è in corso un'operazione di unione.
1 = sull'indice full-text è in corso un'operazione di unione.
TableFullTextBackgroundUpdateIndexOn
Tabella
Nella tabella è attivato l'indice full-text ad aggiornamento in background (rilevamento automatico delle modifiche).
1 = TRUE
0 = FALSE
TableFulltextCatalogId
Tabella
ID del catalogo full-text contenente i dati dell'indice full-text per la tabella.
Valore diverso da zero = ID del catalogo full-text associato all'indice univoco che identifica le righe di una tabella indicizzata full-text.
0 = la tabella non include un indice full-text.
TableFulltextChangeTrackingOn
Tabella
Nella tabella è attivato il rilevamento delle modifiche full-text.
1 = TRUE
0 = FALSE
TableFulltextDocsProcessed
Tabella
Numero di righe elaborate dopo l'avvio dell'indicizzazione full-text. In una tabella di cui si sta eseguendo l'indicizzazione per la ricerca full-text, tutte le colonne di una riga sono considerate parte di un documento da indicizzare.
0 = ricerca per indicizzazione non attiva o indicizzazione full-text completata.
> 0 = uno dei risultati seguenti:
Numero di documenti elaborati dalle operazioni di inserimento o aggiornamento dopo l'avvio del popolamento con rilevamento delle modifiche completo, incrementale o manuale.
Numero di righe elaborate dalle operazioni di inserimento o aggiornamento dopo l'attivazione del rilevamento delle modifiche con popolamento dell'indice ad aggiornamento in background, la modifica dello schema dell'indice full-text, la ricostruzione del catalogo full-text, il riavvio dell'istanza di SQL Server e così via.
NULL = la tabella non include un indice full-text.
NotaQuesta proprietà non controlla né conta le righe eliminate.TableFulltextFailCount
Tabella
Numero di righe della ricerca full-text non indicizzate.
0 = popolamento completato.
> 0 = uno dei risultati seguenti:
Numero dei documenti non indicizzati dall'avvio del popolamento con rilevamento delle modifiche completo, incrementale o ad aggiornamento manuale.
Per il rilevamento delle modifiche con indice ad aggiornamento in background, il numero di righe che non sono state indicizzate dall'avvio o dal riavvio del popolamento. Questa situazione può essere dovuta a una modifica dello schema, alla ricostruzione del catalogo, al riavvio del server e così via.
NULL = la tabella non include un indice full-text.
TableFulltextItemCount
Tabella
Numero di righe per cui l'indicizzazione full-text ha avuto esito positivo.
TableFulltextKeyColumn
Tabella
ID della colonna associata all'indice univoco a colonna singola che partecipa alla definizione dell'indice full-text
0 = la tabella non include un indice full-text.
TableFulltextPendingChanges
Tabella
Numero delle voci di rilevamento delle modifiche in sospeso da elaborare.
0 = rilevamento modifiche non attivato.
NULL = la tabella non include un indice full-text.
TableFulltextPopulateStatus
Tabella
0 = inattivo.
1 = popolamento completo in corso.
2 = popolamento incrementale in corso.
3 = propagazione delle modifiche rilevate in corso.
4 = indice ad aggiornamento in background in corso, ad esempio rilevamento automatico delle modifiche.
5 = indicizzazione full-text rallentata o in sospeso.
TableHasActiveFulltextIndex
Tabella
La tabella include un indice full-text attivo.
1 = true
0 = false
TableHasCheckCnst
Tabella
La tabella include un vincolo CHECK.
1 = true
0 = false
TableHasClustIndex
Tabella
La tabella include un indice cluster.
1 = true
0 = false
TableHasDefaultCnst
Tabella
La tabella include un vincolo DEFAULT.
1 = true
0 = false
TableHasDeleteTrigger
Tabella
La tabella include un trigger DELETE.
1 = true
0 = false
TableHasForeignKey
Tabella
La tabella include un vincolo FOREIGN KEY.
1 = true
0 = false
TableHasForeignRef
Tabella
Un vincolo FOREIGN KEY fa riferimento alla tabella.
1 = true
0 = false
TableHasIdentity
Tabella
La tabella include una colonna Identity.
1 = true
0 = false
TableHasIndex
Tabella
La tabella include un indice di qualsiasi tipo.
1 = true
0 = false
TableHasInsertTrigger
Tabella
L'oggetto ha un trigger INSERT.
1 = true
0 = false
TableHasNonclustIndex
Tabella
La tabella include un indice non cluster.
1 = true
0 = false
TableHasPrimaryKey
Tabella
La tabella include una chiave primaria.
1 = true
0 = false
TableHasRowGuidCol
Tabella
La tabella include un valore ROWGUIDCOL per una colonna di tipo uniqueidentifier.
1 = true
0 = false
TableHasTextImage
Tabella
La tabella include una colonna di tipo text, ntext o image.
1 = true
0 = false
TableHasTimestamp
Tabella
La tabella include una colonna di tipo timestamp.
1 = true
0 = false
TableHasUniqueCnst
Tabella
La tabella include un vincolo UNIQUE.
1 = true
0 = false
TableHasUpdateTrigger
Tabella
L'oggetto include un trigger UPDATE.
1 = true
0 = false
TableHasVarDecimalStorageFormat
Tabella
La tabella è abilitata per utilizzare il formato di archiviazione vardecimal.
1 = true
0 = false
TableInsertTrigger
Tabella
La tabella include un trigger INSERT.
>1 = ID del primo trigger del tipo specificato.
TableInsertTriggerCount
Tabella
La tabella include il numero specificato di trigger INSERT.
>0 = numero di trigger INSERT.
TableIsFake
Tabella
La tabella non è reale, ma viene creata internamente su richiesta da Motore di database di SQL Server.
1 = true
0 = false
TableIsLockedOnBulkLoad
Tabella
La tabella è bloccata a causa di un processo bcp o BULK INSERT.
1 = true
0 = false
TableIsPinned
Tabella
Per la tabella è attivo il pinning per mantenere la tabella archiviata nella cache dei dati.
0 = false
Questa funzionalità non è supportata in SQL Server 2005 e versioni successive.
TableTextInRowLimit
Tabella
Numero massimo di byte consentito per l'opzione text in row.
0 se l'opzione text in row non è impostata.
TableUpdateTrigger
Tabella
La tabella include un trigger UPDATE.
>1 = ID del primo trigger del tipo specificato.
TableUpdateTriggerCount
Tabella
La tabella include il numero specificato di trigger UPDATE.
>0 = numero di trigger UPDATE.
TableHasColumnSet
Tabella
Indica se la tabella include un set di colonne.
0 = false
1 = true
Per ulteriori informazioni, vedere Utilizzo di set di colonne.
Tipi restituiti
int
Eccezioni
Restituisce NULL in caso di errore o se un chiamante non dispone dell'autorizzazione necessaria per visualizzare l'oggetto.
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 OBJECTPROPERTY 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
Motore di database presuppone che object_id sia contenuto nel contesto del database corrente. Una query che fa riferimento a object_id in un altro database restituirà NULL o risultati non corretti. Ad esempio, nella query seguente il contesto di database corrente è il database master. Motore di database tenterà di restituire il valore della proprietà per object_id specificato in quel database invece del database specificato nella query. La query restituisce risultati non corretti perché la vista vEmployee non è contenuta nel database master.
USE master;
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO
OBJECTPROPERTY(view_id, 'IsIndexable') può richiedere una quantità elevata di memoria perché la valutazione della proprietà IsIndexable richiede l'analisi della definizione, normalizzazione e ottimizzazione parziale della vista. Sebbene la proprietà IsIndexable identifichi le tabelle o le viste che possono essere indicizzate, l'effettiva creazione dell'indice ha esito negativo se non vengono rispettati determinati requisiti della chiave dell'indice. Per ulteriori informazioni, vedere CREATE INDEX (Transact-SQL).
OBJECTPROPERTY(table_id 'TableHasActiveFulltextIndex') restituisce 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 si aggiunge la prima colonna da indicizzare.
Durante la creazione di una tabella l'opzione QUOTED IDENTIFIER viene sempre archiviata con l'impostazione ON nei metadati della tabella anche se l'opzione è stata precedentemente impostata su OFF. Pertanto, OBJECTPROPERTY(table_id, 'IsQuotedIdentOn') restituirà sempre 1 (True).
Esempi
A. Verifica che un oggetto sia una tabella
Nell'esempio seguente viene verificato se UnitMeasure è una tabella nel database AdventureWorks.
USE AdventureWorks;
GO
IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 1
PRINT 'UnitMeasure is a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 0
PRINT 'UnitMeasure is not a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') IS NULL
PRINT 'ERROR: UnitMeasure is not a valid object.';
GO
B. Verifica che una funzione a valori scalari definita dall'utente sia deterministica
Nell'esempio seguente viene verificato se la funzione definita dall'utente con valori scalari ufnGetProductDealerPrice, che restituisce un valore money, è o meno deterministica.
USE AdventureWorks;
GO
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic');
GO
Il set di risultati indica che ufnGetProductDealerPrice non è una funzione deterministica.
-----
0
C. Ricerca di oggetti appartenenti a uno schema specifico
Nell'esempio seguente viene utilizzata la proprietà SchemaId per restituire tutti gli oggetti che appartengono allo schema Production.
USE AdventureWorks;
GO
SELECT name, object_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTY(object_id, N'SchemaId') = SCHEMA_ID(N'Production')
ORDER BY type_desc, name;
GO