OBJECTPROPERTY (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric
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.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
OBJECTPROPERTY ( 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 rappresenta le informazioni da restituire per l'oggetto specificato dall'argomento id. I possibili valori per la proprietà 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 la property specificata oppure il chiamante non dispone dell'autorizzazione necessaria per visualizzare i metadati dell'oggetto.
Nome della proprietà | Tipo 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 per 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 disabilitato. 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 abilitato 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 FOREIGN KEY 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 viene eseguita un'istruzione DELETE sulla tabella. 1 = True 0 = False |
ExecIsLastInsertTrigger | Trigger | Ultimo trigger attivato quando viene eseguita un'istruzione INSERT sulla tabella. 1 = True 0 = False |
ExecIsLastUpdateTrigger | Trigger | Ultimo trigger attivato quando viene eseguita 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 disabilitato. 1 = True 0 = False |
ExecIsTriggerNotForRepl | Trigger | Trigger definito come NOT FOR REPLICATION. 1 = True 0 = False |
ExecIsUpdateTrigger | Trigger | Trigger UPDATE. 1 = True 0 = False |
ExecIsWithNativeCompilation | Procedura Transact-SQL | Si applica a: SQL Server 2014 (12.x) e versioni successive. La stored procedure è compilata in modo nativo. 1 = True 0 = False Tipo di dati di base: int |
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, inclusi 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 | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. 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. In SQL Server 2005 (9.x) l'output in formato offuscato non è visibile direttamente in alcuna vista del catalogo. 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 = Disattivato |
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 senza valori scalari |
IsSchemaBound | Funzione, vista | Funzione o vista associata a schema creata con la clausola SCHEMABINDING. 1 = Associata a uno schema 0 = Non associata a uno schema |
IsSystemTable | Tabella | Tabella di sistema. 1 = True 0 = False |
IsSystemVerified | Object | SQL Server può verificare le proprietà di determinismo e precisione dell'oggetto. 1 = True 0 = False |
IsTable | Tabella | Tabella. 1 = True 0 = False |
IsTableFunction | Funzione | Funzione con valori di tabella. 1 = Funzione con valori di tabella 0 = Funzione senza valori 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 | Visualizza | Vista. 1 = True 0 = False |
OwnerId | Qualsiasi oggetto con ambito schema | Proprietario dell'oggetto. Nota: Il proprietario dello schema non deve necessariamente corrispondere al proprietario dell'oggetto. Ad esempio, gli oggetti figlio (per i quali il parametro parent_object_id è impostato su un valore diverso da Null) restituiscono sempre lo stesso ID di proprietario del padre. Valore non Null = ID utente del database per il proprietario dell'oggetto. |
SchemaId | Qualsiasi oggetto con ambito schema | ID dello schema a cui appartiene l'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 | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. 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 | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. Nella tabella è abilitato l'indice full-text ad aggiornamento in background (rilevamento automatico delle modifiche). 1 = TRUE 0 = FALSE |
TableFulltextCatalogId | Tabella | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. 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 con indicizzazione full-text. 0 = La tabella non include un indice full-text. |
TableFulltextChangeTrackingOn | Tabella | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. Nella tabella è abilitato il rilevamento delle modifiche full-text. 1 = TRUE 0 = FALSE |
TableFulltextDocsProcessed | Tabella | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. Numero di righe elaborate dopo l'avvio dell'indicizzazione full-text. In una tabella sottoposta a indicizzazione ai fini della ricerca full-text tutte le colonne di una riga vengono considerate come appartenenti a un unico documento da indicizzare. 0 = Nessuna ricerca per indicizzazione attiva oppure l'indicizzazione full-text è stata completata. > 0 = Possibili valori (A o B): Numero di documenti elaborati dalle operazioni di inserimento o aggiornamento dopo l'avvio del popolamento con rilevamento delle modifiche Completo, Incrementale o Manuale. B) Numero di righe elaborate dalle operazioni di inserimento o aggiornamento dopo l'abilitazione del rilevamento delle modifiche con popolamento dell'indice ad aggiornamento in background, la modifica dello schema dell'indice full-text, la ricompilazione del catalogo full-text, il riavvio dell'istanza di SQL Server e così via. NULL = La tabella non include un indice full-text. Questa proprietà non monitora né conta le righe eliminate. |
TableFulltextFailCount | Tabella | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. Numero di righe non indicizzate dalla ricerca full-text. 0 = Popolamento completato. > 0 = Possibili valori (A o B): A) Numero di documenti non indicizzati dopo l'avvio del popolamento con rilevamento delle modifiche ad aggiornamento Completo, Incrementale e Manuale. B) Per il rilevamento delle modifiche con un indice ad aggiornamento in background, numero di righe non indicizzate dopo l'avvio o il riavvio del popolamento. Questa situazione può essere dovuta a una modifica dello schema, alla ricompilazione del catalogo, al riavvio del server e così via. NULL = La tabella non include un indice full-text. |
TableFulltextItemCount | Tabella | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. Numero di righe per cui l'indicizzazione full-text ha avuto esito positivo. |
TableFulltextKeyColumn | Tabella | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. ID della colonna associata all'indice univoco a colonna singola a cui viene fatto riferimento nella definizione dell'indice full-text. 0 = La tabella non include un indice full-text. |
TableFulltextPendingChanges | Tabella | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. Numero di voci in sospeso del rilevamento delle modifiche da elaborare. 0 = Il rilevamento delle modifiche non è abilitato. NULL = La tabella non include un indice full-text. |
TableFulltextPopulateStatus | Tabella | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. 0 = Inattivo 1 = Popolamento completo in corso. 2 = Popolamento incrementale in corso. 3 = Propagazione delle modifiche rilevate in corso. 4 = Operazione in corso per l'indice ad aggiornamento in background, ad esempio il rilevamento automatico delle modifiche. 5 = Indicizzazione full-text rallentata o sospesa. |
TableHasActiveFulltextIndex | Tabella | Si applica a: SQL Server 2008 (10.0.x) e versioni successive. 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 include 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 ROWGUIDCOL per una colonna uniqueidentifier. 1 = True 0 = False |
TableHasTextImage | Tabella | La tabella include una colonna text, ntext, o immagine. 1 = True 0 = False |
TableHasTimestamp | Tabella | La tabella include una colonna 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 | Tabella abilitata per 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 dal 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 |
TableIsMemoryOptimized | Tabella | Si applica a: SQL Server 2014 (12.x) e versioni successive. La tabella prevede l'ottimizzazione per la memoria 1 = True 0 = False Tipo di dati di base: int Per altre informazioni, vedere OLTP in memoria (ottimizzazione per la memoria). |
TableIsPinned | Tabella | La tabella è bloccata per essere mantenuta nella cache dei dati. 0 = False Questa funzionalità non è supportata in SQL Server 2005 (9.x) o 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 altre informazioni, vedere Usare set di colonne. |
TableTemporalType | Tabella | Si applica a: SQL Server 2016 (13.x) e versioni successive. Specifica il tipo di tabella. 0 = tabella non temporale 1 = tabella di cronologia per tabella con controllo delle versioni di sistema 2 = tabella temporale con controllo delle versioni di sistema |
Tipi restituiti
int
Eccezioni
Restituisce NULL in caso di errore o se un chiamante non dispone dell'autorizzazione necessaria per visualizzare l'oggetto.
Autorizzazioni
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 OBJECTPROPERTY possono restituire NULL se l'utente non dispone di alcuna autorizzazione per l'oggetto. Per altre informazioni, vedere Metadata Visibility Configuration.
Osservazioni:
Il motore di database presuppone che il valore object_id sia specificato 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. Il motore di database tenterà di restituire il valore della proprietà relativo al 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 OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks2022.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 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 altre informazioni, vedere CREATE INDEX (Transact-SQL).
OBJECTPROPERTY(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.
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 viene impostata su OFF quando si crea la tabella. Pertanto, OBJECTPROPERTY(table_id, 'IsQuotedIdentOn') restituirà sempre 1 (true).
Esempi
R. Verifica che un oggetto sia una tabella
Nell'esempio seguente viene verificato se UnitMeasure
è una tabella nel database AdventureWorks2022
.
USE AdventureWorks2022;
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 AdventureWorks2022;
GO
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic');
GO
Il set di risultati indica che ufnGetProductDealerPrice
non è una funzione deterministica.
-----
0
C. Ricerca di tabelle appartenenti a uno schema specifico
L'esempio seguente restituisce tutte le tabelle nello schema dbo.
-- Uses AdventureWorks
SELECT name, object_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTY(object_id, N'SchemaId') = SCHEMA_ID(N'dbo')
ORDER BY type_desc, name;
GO
Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)
D. Verifica che un oggetto sia una tabella
Nell'esempio seguente viene verificato se dbo.DimReseller
è una tabella nel database AdventureWorksPDW2022 .
-- Uses AdventureWorks
IF OBJECTPROPERTY (OBJECT_ID(N'dbo.DimReseller'),'ISTABLE') = 1
SELECT 'DimReseller is a table.'
ELSE
SELECT 'DimReseller is not a table.';
GO
Vedi anche
COLUMNPROPERTY (Transact-SQL)
Funzioni per i metadati (Transact-SQL)
OBJECTPROPERTYEX (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)
sys.objects (Transact-SQL)