Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

OBJECTPROPERTY () so với OBJECTPROPERTYEX () trong SQL Server:Sự khác biệt là gì?

Trong SQL Server, bạn có thể gặp phải OBJECTPROPERTY() , chỉ để biết rằng có cả OBJECTPROPERTYEX() chức năng dường như thực hiện chính xác điều tương tự.

Những gì đang xảy ra ở đây? Tại sao cần có hai chức năng làm cùng một việc?

Tôi hiểu là Microsoft đã chọn thêm OBJECTPROPERTYEX() để mở rộng chức năng của OBJECTPROPERTY() , thay vì giới thiệu các thay đổi đối với OBJECTPROPERTY() điều đó có thể phá vỡ mã hiện có trên các hệ thống kế thừa.

Vì vậy, có một số sự khác biệt giữa hai chức năng.

Có gì khác biệt?

Tóm lại, OBJECTPROPERTYEX() hỗ trợ sáu thuộc tính bổ sung và kiểu trả về của nó là khác nhau.

Đây là bảng phân tích.

OBJECTPROPERTY () OBJECTPROPERTYEX ()
Loại trả lại int sql_variant
Số lượng thuộc tính được hỗ trợ 103 109
Thuộc tính bổ sung
  • BaseType
  • IsPrecise
  • SystemDataAccess
  • TableFullTextSemanticExtraction
  • UserDataAccess
  • Cardinality
Thuộc tính được hỗ trợ
  • 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
  • IsDeterministic
  • IsEncrypto
  • Được thực thi
  • IsExtendedProc
  • IsForeignKey
  • IsIndexed
  • Có thể lập chỉ mục
  • IsInlineFunction
  • IsMSShipped
  • IsPrimaryKey
  • Quy trình thực hiện
  • 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
  • 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
  • IsDefault
  • IsDefaultCnst
  • IsDeterministic
  • IsEncrypto
  • Được thực thi
  • IsExtendedProc
  • IsForeignKey
  • IsIndexed
  • Có thể lập chỉ mục
  • IsInlineFunction
  • IsMSShipped
  • IsPrecise
  • IsPrimaryKey
  • Quy trình thực hiện
  • 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
  • UserDataAccess
  • TableHasColumnSet
  • Bản số
  • TableTemporalType

Ví dụ về Thuộc tính bổ sung

Dưới đây là một ví dụ cho thấy các thuộc tính bổ sung này đang được sử dụng.

 SỬ DỤNG WideWorldImportersDW; DECLARE @objectId int =OBJECT_ID (N'Integration.GenerateDateDimensionColumns '); CHỌN OBJECTPROPERTYEX (@objectId,' BaseType ') AS BaseType, OBJECTPROPERTYEX (@ IsobjectId,' OBJECTPROPERTYEX (@ IsobjectId, 'OBJECTPROPERTYEX) , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX (@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX (@objectId, 'UserDataAccess') AS UserDataAccess, '' CardinalityITYEX, '@ CardinalityITYEX,' 

Kết quả (sử dụng đầu ra dọc):

 BaseType | IFIsPrecise | 0SystemDataAccess | 1TableFullTextSemanticExtraction | 0UserDataAccess | 1Cardinality | KHÔNG CÓ 

Trong trường hợp này, đối tượng là một hàm có giá trị bảng và nó trả về dữ liệu cho năm trong sáu thuộc tính.

Bây giờ, thay vào đó hãy chuyển vào tên của một bảng để xem liệu chúng ta có thể nhận được giá trị cho bản số hay không.

 SỬ DỤNG WideWorldImportersDW; DECLARE @objectId int =OBJECT_ID (N'Dimension.City '); CHỌN OBJECTPROPERTYEX (@objectId,' BaseType ') AS BaseType, OBJECTPROPERTYEX (@objectId,' IsPrecise ') AS IsPrecise , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX (@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX (@objectId, 'UserDataAccess') AS UserDataAccess, '' CardinalityITYEX, '@ CardinalityITYEX,' 

Kết quả (sử dụng đầu ra dọc):

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

Lần này, chúng tôi nhận được NULL cho ba trong số các thuộc tính, nhưng chúng tôi nhận được một giá trị cho thuộc tính 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. Cách thêm khóa chính vào bảng hiện có trong SQL Server (ví dụ T-SQL)

  2. Mục đích của bảng hệ thống master..spt_values ​​là gì và ý nghĩa của các giá trị của nó là gì?

  3. Tìm kiếm chuỗi ký tự đại diện Trigram trong SQL Server

  4. Các cột thưa thớt trong SQL Server:Ảnh hưởng đến thời gian và không gian

  5. COUNT () so với COUNT_BIG () trong SQL Server:Sự khác biệt là gì?