sql >> Database teknologi >  >> RDS >> Sqlserver

OBJECTPROPERTY() vs OBJECTPROPERTYEX() i SQL Server:Hvad er forskellen?

I SQL Server er du muligvis stødt på OBJECTPROPERTY() funktion, kun for at finde ud af, at der også er en OBJECTPROPERTYEX() funktion, der ser ud til at gøre nøjagtig det samme.

Hvad sker der her? Hvorfor er der behov for to funktioner, der gør det samme?

Min forståelse er, at Microsoft valgte at tilføje OBJECTPROPERTYEX() for at udvide funktionaliteten af ​​OBJECTPROPERTY() , i stedet for at indføre ændringer til OBJECTPROPERTY() der potentielt ville bryde eksisterende kode på ældre systemer.

Så der er nogle forskelle mellem de to funktioner.

Hvad er anderledes?

I en nøddeskal, OBJECTPROPERTYEX() understøtter seks ekstra egenskaber, og dens returtype er anderledes.

Her er en oversigt.

OBJECTPROPERTY() OBJECTPROPERTYEX()
Returtype int sql_variant
Antal understøttede egenskaber 103 109
Ekstra egenskaber
  • BaseType
  • Er Præcis
  • SystemDataAccess
  • TabelFuldTekstSemantisk Uddrag
  • Brugerdataadgang
  • Kardinalitet
Understøttede egenskaber
  • 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
  • HarAfterTrigger
  • HasDeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • Er Default
  • IsDefaultCnst
  • Er deterministisk
  • Er Krypteret
  • Udføres
  • IsExtendedProc
  • IsForeignKey
  • Er indekseret
  • Kan indekseres
  • IsInlineFunction
  • ErMSShipped
  • IsPrimary Key
  • IsProcedure
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • Er SystemVerified
  • IsTable
  • IsTableFunction
  • IsTrigger
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • OwnerId
  • SchemaId
  • TabelDeleteTrigger
  • TabelDeleteTriggerCount
  • TableFullTextMergeStatus
  • TabelFuldTekstBaggrundUpdateIndexOn
  • TabelFuldtekstCatalogId
  • TabelFuldtekstChangeTrackingOn
  • TabelFuldtekstdokumenter behandlet
  • TableFulltextFailCount
  • TabelFuldtekstItemCount
  • TabelFuldtekstNøglekolonne
  • TabelFuldtekstVentende ændringer
  • TabelFuldtekstBefolkningsstatus
  • TabelHasActiveFulltextIndex
  • TableHasCheckCnst
  • TabelHasClustIndex
  • TabelHasDefaultCnst
  • TabelHasDeleteTrigger
  • TabelHas ForeignKey
  • TabelHas ForeignRef
  • TabelHasIdentity
  • TabelHasIndex
  • TabelHasInsertTrigger
  • TabelHasNonclustIndex
  • TabelHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TabelHasTimestamp
  • TabelHasUniqueCnst
  • TabelHasUpdateTrigger
  • TabelHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TabelInsertTriggerCount
  • TabelErFalsk
  • TabelIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • Tabel er fastgjort
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TabelUpdateTriggerCount
  • TabelHasColumnSet
  • 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
  • HarAfterTrigger
  • HasDeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • Er Default
  • IsDefaultCnst
  • Er deterministisk
  • Er Krypteret
  • Udføres
  • IsExtendedProc
  • IsForeignKey
  • Er indekseret
  • Kan indekseres
  • IsInlineFunction
  • ErMSShipped
  • IsPrecise
  • IsPrimary Key
  • IsProcedure
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • Er SystemVerified
  • IsTable
  • IsTableFunction
  • IsTrigger
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • OwnerId
  • SchemaId
  • SystemDataAccess
  • TabelDeleteTrigger
  • TabelDeleteTriggerCount
  • TableFullTextMergeStatus
  • TabelFuldTekstBaggrundUpdateIndexOn
  • TabelFuldtekstCatalogId
  • TabelFuldTekstChangeTrackingOn
  • TabelFuldtekstdokumenter behandlet
  • TableFulltextFailCount
  • TabelFuldtekstItemCount
  • TabelFuldtekstNøglekolonne
  • TabelFuldtekstVentende ændringer
  • TabelFuldtekstBefolkningsstatus
  • TabelFuldTekstSemantisk Uddrag
  • TabelHasActiveFulltextIndex
  • TableHasCheckCnst
  • TabelHasClustIndex
  • TabelHasDefaultCnst
  • TabelHasDeleteTrigger
  • TabelHas ForeignKey
  • TabelHas ForeignRef
  • TabelHasIdentity
  • TabelHasIndex
  • TabelHasInsertTrigger
  • TabelHasNonclustIndex
  • TabelHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TabelHasTimestamp
  • TabelHasUniqueCnst
  • TabelHasUpdateTrigger
  • TabelHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TabelInsertTriggerCount
  • TabelErFalsk
  • TabelIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • Tabel er fastgjort
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TabelUpdateTriggerCount
  • UserDataAccess
  • TabelHasColumnSet
  • Kardinalitet
  • TableTemporalType

Eksempel på de ekstra egenskaber

Her er et eksempel, der viser disse ekstra egenskaber i brug.

USE WideWorldImportersDW;DECLARE @objectId int =OBJECT_ID(N'Integration.GenerateDateDimensionColumns');SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType, OBJECTPROjectId(N'Integration.GenerateDateDimensionColumns');SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType, OBJECTPROjectIdex , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS 'UserDataAccess') AS 'UserDataAccess') AS 'UserDataAccess','

'UserDataAccess') AS 'BrugerDataAccess,'CortJECTPROJECTINAL,'Card

Resultat (ved hjælp af lodret output):

BaseType | IFIs Præcis | 0SystemDataAccess | 1TabelFuldtekstSemantisk uddrag | 0UserDataAccess | 1Kardinalitet | NULL

I dette tilfælde er objektet en funktion med tabelværdi, og det returnerer data for fem af de seks egenskaber.

Lad os nu i stedet sende navnet på en tabel for at se, om vi kan få en værdi for kardinalitet.

USE WideWorldImportersDW;DECLARE @objectId int =OBJECT_ID(N'Dimension.City');SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType, OBJECTPROPERTYEX(@objectId, 'ISPreciECTId', 'ISPreciECTIB , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS 'UserDataAccess') AS 'UserDataAccess') AS 'UserDataAccess','

'UserDataAccess') AS 'BrugerDataAccess,'CortJECTPROJECTINAL,'Card

Resultat (ved hjælp af lodret output):

BaseType | U er præcis | NULLSystemDataAccess | NULLTableFuldTextSemanticExtraction | 0UserDataAccess | NULLCardinalitet | 116295

Denne gang får vi NULL for tre af ejendommene, men vi får en værdi for Cardinality-ejendommen.


  1. WEEK() Eksempler – MySQL

  2. SQL Server:hvordan man efterligner oracle keep dense_rank forespørgsel?

  3. Sorter efter rækkefølge af værdier i en select-sætning i klausul i mysql

  4. Forskellige måder at se tabeller på i MySQL Server