sql >> Databáze >  >> RDS >> Sqlserver

OBJECTPROPERTY() vs OBJECTPROPERTYEX() v SQL Server:Jaký je rozdíl?

Na serveru SQL Server jste možná narazili na OBJECTPROPERTY() funkce, jen abyste zjistili, že existuje také OBJECTPROPERTYEX() funkce, která vypadá, že dělá přesně to samé.

Co se tam děje? Proč potřebujete dvě funkce, které dělají totéž?

Chápu to tak, že Microsoft se rozhodl přidat OBJECTPROPERTYEX() pro rozšíření funkčnosti OBJECTPROPERTY() , spíše než zavádět změny do OBJECTPROPERTY() které by potenciálně narušily stávající kód na starších systémech.

Takže nějaké existují rozdíly mezi těmito dvěma funkcemi.

V čem se liší?

Stručně řečeno, OBJECTPROPERTYEX() podporuje šest dalších vlastností a jeho návratový typ je jiný.

Zde je rozpis.

OBJECTPROPERTY() OBJECTPROPERTYEX()
Typ návratu int sql_variant
Počet podporovaných vlastností 103 109
Další vlastnosti
  • BaseType
  • Je Přesné
  • SystemDataAccess
  • TableFullTextSemanticExtraction
  • UserDataAccess
  • Kardinalita
Podporované vlastnosti
  • CnstIsClustKey
  • CnstIsColumn
  • CnstIsDeleteCascade
  • CnstIsDisabled
  • CnstIsNonclustKey
  • CnstIsNotRepl
  • CnstIsNotTrusted
  • CnstIsUpdateCascade
  • ExecIsAfterTrigger
  • ExecIsAnsiNullsOn
  • ExecIsDeleteTrigger
  • ExecIsFirstDeleteTrigger
  • ExecIsFirstInsertTrigger
  • ExecIsFirstUpdateTrigger
  • ExecIsInsertTrigger
  • ExecIsInsteadOfTrigger
  • ExecIsLastDeleteTrigger
  • ExecIsLastInsertTrigger
  • ExecIsLastUpdateTrigger
  • ExecIsQuotedIdentOn
  • ExecIsStartup
  • ExecIsTriggerDisabled
  • ExecIsTriggerNotForRepl
  • ExecIsUpdateTrigger
  • ExecIsWithNativeCompilation
  • HasAfterTrigger
  • HasDeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • Je výchozí
  • IsDefaultCnst
  • IsDeterministic
  • IsEncrypted
  • IsExecuted
  • IsExtendedProc
  • JeForeignKey
  • IsIndexed
  • Je indexovatelné
  • IsInlineFunction
  • IsMSShipped
  • IsPrimaryKey
  • IsProcedure
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • IsTrigger
  • JeUniqueCnst
  • IsUserTable
  • IsView
  • ID vlastníka
  • SchemaId
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFulltextChangeTrackingOn
  • TableFulltextDocsProcessed
  • TableFulltextFailCount
  • TableFulltextItemCount
  • TableFulltextKeyColumn
  • TableFulltextPendingChanges
  • TableFulltextPopulateStatus
  • TableHasActiveFulltextIndex
  • TableHasCheckCnst
  • TableHasClustIndex
  • TableHasDefaultCnst
  • TableHasDeleteTrigger
  • TableHasForeignKey
  • TableHasForeignRef
  • TableHasIdentity
  • TableHasIndex
  • TableHasInsertTrigger
  • TableHasNonclusIndex
  • TableHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TableHasTimestamp
  • TableHasUniqueCnst
  • TableHasUpdateTrigger
  • TableHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TableInsertTriggerCount
  • TableIsFake
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • TableIsPinned
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TableUpdateTriggerCount
  • TableHasColumnSet
  • TableTemporalType
  • BaseType
  • CnstIsClustKey
  • CnstIsColumn
  • CnstIsDeleteCascade
  • CnstIsDisabled
  • CnstIsNonclustKey
  • CnstIsNotRepl
  • CnstIsNotTrusted
  • CnstIsUpdateCascade
  • ExecIsAfterTrigger
  • ExecIsAnsiNullsOn
  • ExecIsDeleteTrigger
  • ExecIsFirstDeleteTrigger
  • ExecIsFirstInsertTrigger
  • ExecIsFirstUpdateTrigger
  • ExecIsInsertTrigger
  • ExecIsInsteadOfTrigger
  • ExecIsLastDeleteTrigger
  • ExecIsLastInsertTrigger
  • ExecIsLastUpdateTrigger
  • ExecIsQuotedIdentOn
  • ExecIsStartup
  • ExecIsTriggerDisabled
  • ExecIsTriggerNotForRepl
  • ExecIsUpdateTrigger
  • ExecIsWithNativeCompilation
  • HasAfterTrigger
  • HasDeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • Je výchozí
  • IsDefaultCnst
  • IsDeterministic
  • IsEncrypted
  • IsExecuted
  • IsExtendedProc
  • JeForeignKey
  • IsIndexed
  • Je indexovatelné
  • IsInlineFunction
  • IsMSShipped
  • Je Přesná
  • IsPrimaryKey
  • IsProcedure
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • IsTrigger
  • JeUniqueCnst
  • IsUserTable
  • IsView
  • ID vlastníka
  • SchemaId
  • SystemDataAccess
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFullTextChangeTrackingOn
  • TableFulltextDocsProcessed
  • TableFulltextFailCount
  • TableFulltextItemCount
  • TableFulltextKeyColumn
  • TableFulltextPendingChanges
  • TableFulltextPopulateStatus
  • TableFullTextSemanticExtraction
  • TableHasActiveFulltextIndex
  • TableHasCheckCnst
  • TableHasClustIndex
  • TableHasDefaultCnst
  • TableHasDeleteTrigger
  • TableHasForeignKey
  • TableHasForeignRef
  • TableHasIdentity
  • TableHasIndex
  • TableHasInsertTrigger
  • TableHasNonclusIndex
  • TableHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TableHasTimestamp
  • TableHasUniqueCnst
  • TableHasUpdateTrigger
  • TableHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TableInsertTriggerCount
  • TableIsFake
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • TableIsPinned
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TableUpdateTriggerCount
  • UserDataAccess
  • TableHasColumnSet
  • Kardinálnost
  • TableTemporalType

Příklad doplňkových vlastností

Zde je příklad, který ukazuje použití těchto dalších vlastností.

USE WideWorldImportersDW;DECLARE @objectId int =OBJECT_ID(N'Integration.GenerateDateDimensionColumns');SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType, OBJECTPROPERTY,sPreciEX(se'object)IsdPROCIEX , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'ASerDataTYAccess'(@ject) AS UserDataJECTdPROccessinEXSI,obardinity, 

Výsledek (při použití vertikálního výstupu):

BaseType | IFIsPrecise | 0SystemDataAccess | 1TableFullTextSemanticExtraction | 0UserDataAccess | 1Kardinalita | NULL

V tomto případě je objektem funkce s tabulkovou hodnotou a vrací data pro pět ze šesti vlastností.

Nyní místo toho předáme název tabulky, abychom zjistili, zda můžeme získat hodnotu pro mohutnost.

USE WideWorldImportersDW;DECLARE @objectId int =OBJECT_ID(N'Dimension.City');SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType, OBJECTPROPERTYEX(@objectId, 'IsPreciEXseobject')IsPreciEXseobject')IsPreciSEobject , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'ASerDataTYAccess'(@ject) AS UserDataJECTdPROccessinEXSI,obardinity, 

Výsledek (při použití vertikálního výstupu):

BaseType | U IsPrecise | NULLSystemDataAccess | NULLTableFullTextSemanticExtraction | 0UserDataAccess | NULLCardinalita | 116295

Tentokrát dostaneme NULL pro tři vlastnosti, ale získáme hodnotu pro vlastnost Cardinality.


  1. Oracle Concurrent Manager – CP Analyzer pro E-Business Suite

  2. Zpožděná trvanlivost v SQL Server 2014

  3. Kontingenční tabulka s nekardinálními hodnotami

  4. Jak zjistit, zda je vypočítaný sloupec deterministický na serveru SQL Server