Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

OBJECTPROPERTY() срещу OBJECTPROPERTYEX() в SQL Server:Каква е разликата?

В SQL Server може да сте срещнали OBJECTPROPERTY() функция, само за да разберете, че има и OBJECTPROPERTYEX() функция, която изглежда прави точно същото нещо.

Какво става тук? Защо има нужда от две функции, които правят едно и също нещо?

Моето разбиране е, че Microsoft избра да добави OBJECTPROPERTYEX() за да разширите функционалността на OBJECTPROPERTY() , вместо да въвеждат промени в OBJECTPROPERTY() което потенциално би разбило съществуващия код на наследени системи.

Така че има някои разлики между двете функции.

Какво е различно?

Накратко, OBJECTPROPERTYEX() поддържа шест допълнителни свойства и неговият тип връщане е различен.

Ето разбивка.

OBJECTPROPERTY() OBJECTPROPERTYEX()
Тип връщане int sql_variant
Брой поддържани свойства 103 109
Допълнителни свойства
  • Базов тип
  • Е точен
  • SystemDataAccess
  • TableFullTextSemanticExtraction
  • UserDataAccess
  • Кардиналност
Поддържани свойства
  • 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
  • Има DeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • По подразбиране
  • IsDefaultCnst
  • Едетерминистично
  • Шифровано
  • Изпълнено
  • IsExtendedProc
  • IsForeignKey
  • Индексирано е
  • Индексира се
  • IsInlineFunction
  • Изпратено е MSS
  • IsPrimaryKey
  • IsProcedure
  • IsQuotedIdentOn
  • Опашка за търсене
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • SystemVerified
  • Стабилно
  • 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
  • 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
  • Има DeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • По подразбиране
  • IsDefaultCnst
  • Едетерминистично
  • Шифровано
  • Изпълнено
  • IsExtendedProc
  • IsForeignKey
  • Индексирано е
  • Индексира се
  • IsInlineFunction
  • Изпратено е MSS
  • Е точен
  • IsPrimaryKey
  • IsProcedure
  • IsQuotedIdentOn
  • Опаса
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • SystemVerified
  • Стабилно
  • 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
  • UserDataAccess
  • TableHasColumnSet
  • Кардиналност
  • TableTemporalType

Пример за допълнителните свойства

Ето пример, който показва тези допълнителни свойства, които се използват.

ИЗПОЛЗВАЙТЕ WideWorldImportersDW;DECLARE @objectId int =OBJECT_ID(N'Integration.GenerateDateDimensionColumns');ИЗБЕРЕТЕ OBJECTPROPERTYEX(@objectId, 'BaseType') КАТО BaseType, OBJECTPROPERTYEX, OBJECTPROPERTYEX, OBJECTPROPERTYEX, OBJECTPROPERTYEX, OBJECTPROPERTYEX, OBJECT. , 'SystemDataAccess') КАТО SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') КАТО TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') 'UserDataAccess') 'UserDataAccess') 

Резултат (с помощта на вертикален изход):

BaseType | IFIsPrecise | 0SystemDataAccess | 1TableFullTextSemanticExtraction | 0UserDataAccess | 1 Кардиналност | NULL

В този случай обектът е функция с таблична стойност и връща данни за пет от шестте свойства.

Сега нека вместо това да предадем името на таблица, за да видим дали можем да получим стойност за мощност.

ИЗПОЛЗВАЙТЕ WideWorldImportersDW;DECLARE @objectId int =OBJECT_ID(N'Dimension.City');ИЗБЕРЕТЕ OBJECTPROPERTYEX(@objectId, 'BaseType') КАТО BaseType, OBJECTPROPERTYEX(@objectId@objectPrecise'd КАТО ПРОЕКТ Е , 'SystemDataAccess') КАТО SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') КАТО TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') 'UserDataAccess') 'UserDataAccess') 

Резултат (с помощта на вертикален изход):

BaseType | U IsPrecise | NULLSystemDataAccess | NULLTableFullTextSemanticExtraction | 0UserDataAccess | NULLКардиналност | 116295

Този път получаваме NULL за три от свойствата, но получаваме стойност за свойството Cardinality.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инструкция за изтриване на SQL Server:Как да премахнете един или умножете редове от таблицата

  2. Не може да се свърже със сървъра - грешка, свързана с мрежата или специфична за екземпляр

  3. Защо функциите със скаларна стойност на SQL Server стават по-бавни?

  4. Как да върнете изхода на съхранената процедура в променлива в sql сървър

  5. Какво е скаларен UDF в SQL Server?