sql >> Database >  >> RDS >> Sqlserver

OBJECTPROPERTY() versus OBJECTPROPERTYEX() in SQL Server:wat is het verschil?

In SQL Server bent u mogelijk de OBJECTPROPERTY() . tegengekomen functie, om erachter te komen dat er ook een OBJECTPROPERTYEX() . is functie die precies hetzelfde lijkt te doen.

Wat is hier aan de hand? Waarom zijn er twee functies nodig die hetzelfde doen?

Ik heb begrepen dat Microsoft ervoor heeft gekozen om OBJECTPROPERTYEX() . toe te voegen om de functionaliteit van OBJECTPROPERTY() uit te breiden , in plaats van wijzigingen aan te brengen in OBJECTPROPERTY() die mogelijk bestaande code op oudere systemen zou breken.

Er zijn dus sommige verschillen tussen de twee functies.

Wat is er anders?

In een notendop, OBJECTPROPERTYEX() ondersteunt zes extra eigenschappen en het retourtype is anders.

Hier is een uitsplitsing.

OBJECTEIGENSCHAP() OBJECTPROPERTYEX()
Retourtype int sql_variant
Aantal ondersteunde eigenschappen 103 109
Extra eigenschappen
  • Basistype
  • IsPrecise
  • SystemDataAccess
  • TableFullTextSemanticExtraction
  • Gebruikersgegevenstoegang
  • Kardinaliteit
Ondersteunde eigenschappen
  • 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
  • IsDefault
  • IsDefaultCnst
  • IsDeterministisch
  • IsEncrypted
  • IsUitgevoerd
  • IsExtendedProc
  • IsForeignKey
  • IsIndexed
  • IsIndexable
  • IsInlineFunction
  • IsMSShipped
  • IsPrimaryKey
  • IsProcedure
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • IsTrigger
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • OwnerId
  • SchemaId
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFulltextChangeTrackingOn
  • TableFulltextDocsProcessed
  • TableFulltextFailCount
  • TableFulltextItemCount
  • TableFulltextKeyColumn
  • TableFulltextPendingChanges
  • TableFulltextPopulateStatus
  • TableHasActiveFulltextIndex
  • TableHasCheckCnst
  • TableHasClustIndex
  • TableHasDefaultCnst
  • TableHasDeleteTrigger
  • TableHasForeignKey
  • TableHasForeignRef
  • TableHasIdentity
  • TableHasIndex
  • TableHasInsertTrigger
  • TableHasNonclustIndex
  • TableHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TableHasTimestamp
  • TableHasUniqueCnst
  • TableHasUpdateTrigger
  • TableHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TableInsertTriggerCount
  • TableIsFake
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • TableIsPinned
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TableUpdateTriggerCount
  • TableHasColumnSet
  • TableTemporalType
  • Basistype
  • 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
  • IsDefault
  • IsDefaultCnst
  • IsDeterministisch
  • IsEncrypted
  • IsUitgevoerd
  • IsExtendedProc
  • IsForeignKey
  • IsIndexed
  • IsIndexable
  • IsInlineFunction
  • IsMSShipped
  • IsPrecise
  • IsPrimaryKey
  • IsProcedure
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • IsTrigger
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • OwnerId
  • 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
  • TableHasNonclustIndex
  • TableHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TableHasTimestamp
  • TableHasUniqueCnst
  • TableHasUpdateTrigger
  • TableHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TableInsertTriggerCount
  • TableIsFake
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • TableIsPinned
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TableUpdateTriggerCount
  • Gebruikersgegevenstoegang
  • TableHasColumnSet
  • Kardinaliteit
  • TableTemporalType

Voorbeeld van de extra eigenschappen

Hier is een voorbeeld dat deze extra eigenschappen in gebruik laat zien.

USE WideWorldImportersDW;DECLARE @objectId int =OBJECT_ID(N'Integration.GenerateDateDimensionColumns');SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType, OBJECTPROPERTYEX(@objectId, 'IsPrecise') , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') ASPERDataAccess>-kaart) ASPERDataJccess-kaart 

Resultaat (met verticale uitvoer):

Basistype | IFI'sPrecieze | 0SysteemDataToegang | 1TableFullTextSemanticExtraction | 0GebruikersgegevensToegang | 1Kardinaliteit | NULL

In dit geval is het object een functie met tabelwaarde en retourneert het gegevens voor vijf van de zes eigenschappen.

Laten we nu in plaats daarvan de naam van een tabel doorgeven om te zien of we een waarde voor kardinaliteit kunnen krijgen.

GEBRUIK WideWorldImportersDW;DECLARE @objectId int =OBJECT_ID(N'Dimension.City');SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType, OBJECTPROPERTYEX(@objectId, 'IsPrecise') AS IsPrecise, OBJECTPROPERTYEX(@objectId, 'BaseType') , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') ASPERDataAccess>-kaart,
 Resultaat (met verticale uitvoer):

Basistype | U IsPrecise | NULLSystemDataAccess | NULLTableFullTextSemanticExtraction | 0GebruikersgegevensToegang | NULLKardinaliteit | 116295

Deze keer krijgen we NULL voor drie van de eigenschappen, maar we krijgen wel een waarde voor de eigenschap Cardinality.


  1. SQL MIN() voor beginners

  2. Besparingen op gegevenscompressie in SQL Server schatten

  3. Hoe het aantal seconden na middernacht in Oracle Database te retourneren?

  4. Zijn er opties voor een join-tafel voor veel-op-veel verenigingen?