Condividi tramite


OBJECTPROPERTY (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di analisi (PDW)Endpoint di analisi SQL in Microsoft FabricMagazzino in Microsoft FabricDatabase SQL 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. L'ID è int e si presuppone che sia un oggetto con ambito schema nel contesto del database corrente.

property

Espressione che rappresenta le informazioni da restituire per l'oggetto specificato dall'ID. può essere uno dei valori seguenti.

Nota

Se non specificato diversamente, NULL viene restituito quando la proprietà non è un nome di proprietà valido, ID non è un ID oggetto valido, ID è un tipo di oggetto non supportato per la proprietà specificata oppure il chiamante non dispone dell'autorizzazione per visualizzare i metadati dell'oggetto.

Nome della proprietà Tipo object Descrizione e valori restituiti
CnstIsClustKey Vincolo PRIMARY KEY vincolo con un indice cluster.

1 = Vero

0 = Falso
CnstIsColumn Vincolo CHECKVincolo , DEFAULTo FOREIGN KEY su una singola colonna.

1 = Vero

0 = Falso
CnstIsDeleteCascade Vincolo FOREIGN KEY vincolo con l'opzione ON DELETE CASCADE .

1 = Vero

0 = Falso
CnstIsDisabled Vincolo Vincolo disabilitato.

1 = Vero

0 = Falso
CnstIsNonclustKey Vincolo PRIMARY KEY o UNIQUE vincolo con un indice non cluster.

1 = Vero

0 = Falso
CnstIsNotRepl Vincolo Il vincolo viene definito usando le NOT FOR REPLICATION parole chiave .

1 = Vero

0 = Falso
CnstIsNotTrusted Vincolo Il vincolo è stato abilitato senza controllare le righe esistenti; pertanto, il vincolo potrebbe non contenere per tutte le righe.

1 = Vero

0 = Falso
CnstIsUpdateCascade Vincolo FOREIGN KEY vincolo con l'opzione ON UPDATE CASCADE .

1 = Vero

0 = Falso
ExecIsAfterTrigger Trigger AFTER Grilletto.

1 = Vero

0 = Falso
ExecIsAnsiNullsOn Funzione Transact-SQL, procedura Transact-SQL, trigger Transact-SQL, vista Impostazione di in fase di ANSI_NULLS creazione.

1 = Vero

0 = Falso
ExecIsDeleteTrigger Trigger DELETE Grilletto.

1 = Vero

0 = Falso
ExecIsFirstDeleteTrigger Trigger Primo trigger generato quando un DELETE oggetto viene eseguito sulla tabella.

1 = Vero

0 = Falso
ExecIsFirstInsertTrigger Trigger Primo trigger generato quando viene eseguito un INSERT oggetto sulla tabella.

1 = Vero

0 = Falso
ExecIsFirstUpdateTrigger Trigger Primo trigger generato quando viene eseguito un UPDATE oggetto sulla tabella.

1 = Vero

0 = Falso
ExecIsInsertTrigger Trigger INSERT Grilletto.

1 = Vero

0 = Falso
ExecIsInsteadOfTrigger Trigger INSTEAD OF Grilletto.

1 = Vero

0 = Falso
ExecIsLastDeleteTrigger Trigger Ultimo trigger generato quando viene eseguito un DELETE oggetto sulla tabella.

1 = Vero

0 = Falso
ExecIsLastInsertTrigger Trigger Ultimo trigger generato quando un oggetto INSERT viene eseguito sulla tabella.

1 = Vero

0 = Falso
ExecIsLastUpdateTrigger Trigger Ultimo trigger generato quando un oggetto UPDATE viene eseguito sulla tabella.

1 = Vero

0 = Falso
ExecIsQuotedIdentOn Funzione Transact-SQL, procedura Transact-SQL, trigger Transact-SQL, vista Impostazione di in fase di QUOTED_IDENTIFIER creazione.

1 = Vero

0 = Falso
ExecIsStartup Procedura Procedura di avvio.

1 = Vero

0 = Falso
ExecIsTriggerDisabled Trigger Trigger disabilitato.

1 = Vero

0 = Falso
ExecIsTriggerNotForRepl Trigger Trigger definito come NOT FOR REPLICATION.

1 = Vero

0 = Falso
ExecIsUpdateTrigger Trigger UPDATE Grilletto.

1 = Vero

0 = Falso
ExecIsWithNativeCompilation Procedura Transact-SQL Si applica a: SQL Server 2014 (12.x) e versioni successive.

La stored procedure è compilata in modo nativo.

1 = Vero

0 = Falso

Tipo di dati di base: int
HasAfterTrigger Tabella o vista La tabella o la vista ha un AFTER trigger.

1 = Vero

0 = Falso
HasDeleteTrigger Tabella o vista La tabella o la vista ha un DELETE trigger.

1 = Vero

0 = Falso
HasInsertTrigger Tabella o vista La tabella o la vista ha un INSERT trigger.

1 = Vero

0 = Falso
HasInsteadOfTrigger Tabella o vista La tabella o la vista ha un INSTEAD OF trigger.

1 = Vero

0 = Falso
HasUpdateTrigger Tabella o vista La tabella o la vista ha un UPDATE trigger.

1 = Vero

0 = Falso
IsAnsiNullsOn Funzione Transact-SQL, procedura Transact-SQL, tabella, trigger Transact-SQL, vista Specifica che l'impostazione ANSI NULLS dell'opzione per la tabella è ON. Quando ANSI NULLS è ON, tutti i confronti con un NULL valore 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 = Vero

0 = Falso
IsCheckCnst Qualsiasi oggetto con ambito schema CHECK costrizione.

1 = Vero

0 = Falso
IsConstraint Qualsiasi oggetto con ambito schema È una singola colonna CHECK, DEFAULTo FOREIGN KEY vincolo in una colonna o in una tabella.

1 = Vero

0 = Falso
IsDefault Qualsiasi oggetto con ambito schema Si applica a: SQL Server 2008 (10.0.x) e versioni successive.

Valore predefinito associato.

1 = Vero

0 = Falso
IsDefaultCnst Qualsiasi oggetto con ambito schema DEFAULT costrizione.

1 = Vero

0 = Falso
IsDeterministic Funzione o 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. Tuttavia, il testo è disponibile per gli utenti che possono accedere alle tabelle di sistema tramite la connessione diagnostica per gli amministratori di database o accedere direttamente ai file di 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 = Vero

0 = Falso
IsExtendedProc Qualsiasi oggetto con ambito schema Procedura estesa.

1 = Vero

0 = Falso
IsForeignKey Qualsiasi oggetto con ambito schema FOREIGN KEY costrizione.

1 = Vero

0 = Falso
IsIndexed Tabella o vista Tabella o vista contenente un indice.

1 = Vero

0 = Falso
IsIndexable Tabella o vista Tabella o vista in cui è possibile creare un indice.

1 = Vero

0 = Falso
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 = Vero

0 = Falso
IsPrimaryKey Qualsiasi oggetto con ambito schema PRIMARY KEY costrizione.

1 = Vero

0 = Falso

NULL = Non è una funzione o l'ID oggetto non è valido.
IsProcedure Qualsiasi oggetto con ambito schema Procedura.

1 = Vero

0 = Falso
IsQuotedIdentOn funzione Transact-SQL, routine Transact-SQL, tabella, trigger Transact-SQL, vista, CHECK vincolo, DEFAULT definizione Specifica che l'impostazione dell'identificatore tra virgolette per l'oggetto è 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 = Vero

0 = Falso
IsReplProc Qualsiasi oggetto con ambito schema Procedura di replica.

1 = Vero

0 = Falso
IsRule Qualsiasi oggetto con ambito schema Regola associata.

1 = Vero

0 = Falso
IsScalarFunction Funzione Funzione con valori scalari.

1 = Funzione con valori scalari

0 = Funzione senza valori scalari
IsSchemaBound Funzione o vista Funzione o vista associata a schema creata tramite SCHEMABINDING.

1 = Associata a uno schema

0 = Non associata a uno schema
IsSystemTable Tabella Tabella di sistema.

1 = Vero

0 = Falso
IsSystemVerified Object SQL Server può verificare le proprietà di determinismo e precisione dell'oggetto.

1 = Vero

0 = Falso
IsTable Tabella Tabella.

1 = Vero

0 = Falso
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 = Vero

0 = Falso
IsUniqueCnst Qualsiasi oggetto con ambito schema UNIQUE costrizione.

1 = Vero

0 = Falso
IsUserTable Tabella Tabella definita dall'utente.

1 = Vero

0 = Falso
IsView Visualizza Vista.

1 = Vero

0 = Falso
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 (quelli in cui parent_object_id è diverso da Null) restituiranno sempre lo stesso ID proprietario dell'elemento padre.

Diverso da null = ID utente del database del proprietario dell'oggetto.
SchemaId Qualsiasi oggetto con ambito schema ID dello schema a cui appartiene l'oggetto.
TableDeleteTrigger Tabella La tabella include un DELETE trigger.

>1 = ID del primo trigger del tipo specificato.
TableDeleteTriggerCount Tabella La tabella ha il numero specificato di DELETE trigger.

>0 = Numero di DELETE trigger.
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 = VERO

0 = FALSO
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 = VERO

0 = FALSO
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 da operazioni di inserimento o aggiornamento dopo l'abilitazione del rilevamento delle modifiche con popolamento dell'indice di aggiornamento in background, lo schema dell'indice full-text modificato, il catalogo full-text ricompilato o l'istanza di SQL Server riavviata.

NULL = La tabella non dispone di 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 = Popolazione completata.

> 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 dispone di 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 dispone di 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 = Vero

0 = Falso
TableHasCheckCnst Tabella La tabella ha un CHECK vincolo.

1 = Vero

0 = Falso
TableHasClustIndex Tabella La tabella include un indice cluster.

1 = Vero

0 = Falso
TableHasDefaultCnst Tabella La tabella ha un DEFAULT vincolo.

1 = Vero

0 = Falso
TableHasDeleteTrigger Tabella La tabella include un DELETE trigger.

1 = Vero

0 = Falso
TableHasForeignKey Tabella La tabella ha un FOREIGN KEY vincolo.

1 = Vero

0 = Falso
TableHasForeignRef Tabella La tabella fa riferimento a un FOREIGN KEY vincolo.

1 = Vero

0 = Falso
TableHasIdentity Tabella La tabella include una colonna Identity.

1 = Vero

0 = Falso
TableHasIndex Tabella La tabella include un indice di qualsiasi tipo.

1 = Vero

0 = Falso
TableHasInsertTrigger Tabella L'oggetto ha un INSERT trigger.

1 = Vero

0 = Falso
TableHasNonclustIndex Tabella La tabella include un indice non cluster.

1 = Vero

0 = Falso
TableHasPrimaryKey Tabella La tabella include una chiave primaria.

1 = Vero

0 = Falso
TableHasRowGuidCol Tabella La tabella include un oggetto ROWGUIDCOL per una colonna uniqueidentifier .

1 = Vero

0 = Falso
TableHasTextImage Tabella La tabella include una colonna text, ntext, o immagine.

1 = Vero

0 = Falso
TableHasTimestamp Tabella La tabella include una colonna timestamp.

1 = Vero

0 = Falso
TableHasUniqueCnst Tabella La tabella ha un UNIQUE vincolo.

1 = Vero

0 = Falso
TableHasUpdateTrigger Tabella L'oggetto ha un UPDATE trigger.

1 = Vero

0 = Falso
TableHasVarDecimalStorageFormat Tabella Tabella abilitata per il formato di archiviazione vardecimal.

1 = Vero

0 = Falso
TableInsertTrigger Tabella La tabella ha un INSERT trigger.

>1 = ID del primo trigger del tipo specificato.
TableInsertTriggerCount Tabella La tabella ha il numero specificato di INSERT trigger.

>0 = Numero di INSERT trigger.
TableIsFake Tabella La tabella non è reale, ma viene creata internamente su richiesta dal motore di Database di SQL Server.

1 = Vero

0 = Falso
TableIsLockedOnBulkLoad Tabella La tabella è bloccata a causa di un processo oBULK INSERT bcp.

1 = Vero

0 = Falso
TableIsMemoryOptimized Tabella Si applica a: SQL Server 2014 (12.x) e versioni successive.

La tabella prevede l'ottimizzazione per la memoria

1 = Vero

0 = Falso

Tipo di dati di base: int

Per altre informazioni, vedere In-Memory panoramica oltp e scenari di utilizzo.
TableIsPinned Tabella La tabella è bloccata per essere mantenuta nella cache dei dati.

0 = Falso

Questa funzionalità non è supportata in SQL Server 2005 (9.x) 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 ha un UPDATE trigger.

> 1 = ID del primo trigger del tipo specificato.
TableUpdateTriggerCount Tabella La tabella contiene il numero specificato di UPDATE trigger.

> 0 = Numero di UPDATE trigger.
TableHasColumnSet Tabella Indica se la tabella include un set di colonne.

0 = Falso

1 = Vero

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 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. Ciò significa che le funzioni predefinite che generano metadati, ad OBJECTPROPERTY esempio restituiscono NULL se l'utente non dispone di alcuna autorizzazione per l'oggetto. Per altre informazioni, vedere Configurazione della visibilità dei metadati.

Osservazioni:

Il motore di database presuppone che il valore object_id sia specificato nel contesto di database corrente. Una query che fa riferimento a un object_id in un altro database restituisce o risultati NULL non corretti. Nella query seguente, ad esempio, il contesto del database corrente è il master database. Il motore di database tenta di restituire il valore della proprietà per il object_id specificato in tale database anziché il database specificato nella query. La query restituisce risultati non corretti perché la vista vEmployee non si trova nel master database.

USE master;
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks2022.HumanResources.vEmployee'), 'IsView');
GO

OBJECTPROPERTY(view_id, 'IsIndexable') può utilizzare risorse computer significative perché la valutazione della proprietà IsIndexable richiede l'analisi della definizione di visualizzazione, normalizzazione e ottimizzazione parziale. 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 un valore ( 1 true) quando viene aggiunta almeno una colonna di una tabella per l'indicizzazione. L'indicizzazione full-text risulta attiva per il popolamento non appena viene aggiunta la prima colonna per l'indicizzazione.

Quando viene creata una tabella, l'opzione QUOTED IDENTIFIER viene sempre archiviata come ON nei metadati della tabella, anche se l'opzione è impostata OFF su quando viene creata la tabella. Pertanto, OBJECTPROPERTY(table_id, 'IsQuotedIdentOn') restituisce sempre un valore di 1 (true).

Esempi

R. Verificare che un oggetto sia una tabella

Nell'esempio seguente viene verificato se UnitMeasure è una tabella nel database AdventureWorks2025.

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. Verificare che una funzione definita dall'utente con valori scalari 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: Trovare le tabelle che appartengono a uno schema specifico

Nell'esempio seguente vengono restituite tutte le tabelle dello dbo schema.

-- Uses AdventureWorks

SELECT schema_name(o.schema_id), o.name, o.object_id, o.type_desc
FROM sys.objects AS o
WHERE OBJECTPROPERTY(o.object_id, N'SchemaId') = SCHEMA_ID(N'dbo')
ORDER BY o.type_desc, o.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