Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

OBJECTPROPERTY() vs OBJECTPROPERTYEX() di SQL Server:Apa Perbedaannya?

Di SQL Server, Anda mungkin menemukan OBJECTPROPERTY() fungsi, hanya untuk mengetahui bahwa ada juga OBJECTPROPERTYEX() fungsi yang tampaknya melakukan hal yang persis sama.

Apa yang terjadi di sini? Mengapa perlu dua fungsi yang melakukan hal yang sama?

Pemahaman saya adalah bahwa Microsoft memilih untuk menambahkan OBJECTPROPERTYEX() untuk memperluas fungsionalitas OBJECTPROPERTY() , daripada memperkenalkan perubahan pada OBJECTPROPERTY() yang berpotensi merusak kode yang ada pada sistem lama.

Jadi ada beberapa perbedaan antara kedua fungsi tersebut.

Apa Bedanya?

Singkatnya, OBJECTPROPERTYEX() mendukung enam properti tambahan, dan tipe pengembaliannya berbeda.

Berikut rinciannya.

PROPERTI OBYEK() OBJECTPROPERTYEX()
Jenis Pengembalian int sql_variant
Jumlah Properti yang Didukung 103 109
Properti Ekstra
  • Tipe Dasar
  • Tepat
  • SystemDataAccess
  • TableFullTextSemanticExtraction
  • Akses DataPengguna
  • Kardinalitas
Properti yang Didukung
  • CnstIsClustKey
  • CnstIsColumn
  • CnstIsDeleteCascade
  • CnstDisabled
  • 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
  • Adalah Kendala
  • Apakah Default
  • IsDefaultCnst
  • ApakahDeterministik
  • Terenkripsi
  • Dieksekusi
  • IsExtendedProc
  • IsForeignKey
  • Diindeks
  • Dapat Diindeks
  • IsInlineFunction
  • Sudah Dikirim
  • IsPrimaryKey
  • AdalahProsedur
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • Pemicu
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • Id Pemilik
  • Id Skema
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TabelFulltextChangeTrackingOn
  • TabelFulltextDocsDiproses
  • TabelFulltextFailCount
  • TableFulltextItemCount
  • TabelFulltextKeyColumn
  • TabelFulltextTertundaPerubahan
  • TabelFulltextPopulateStatus
  • 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
  • Tipe Dasar
  • CnstIsClustKey
  • CnstIsColumn
  • CnstIsDeleteCascade
  • CnstDisabled
  • 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
  • Adalah Kendala
  • Apakah Default
  • IsDefaultCnst
  • ApakahDeterministik
  • Terenkripsi
  • Dieksekusi
  • IsExtendedProc
  • IsForeignKey
  • Diindeks
  • Dapat Diindeks
  • IsInlineFunction
  • Sudah Dikirim
  • Tepat
  • IsPrimaryKey
  • AdalahProsedur
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • Pemicu
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • Id Pemilik
  • Id Skema
  • SystemDataAccess
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFullTextChangeTrackingOn
  • TabelFulltextDocsDiproses
  • TabelFulltextFailCount
  • TableFulltextItemCount
  • TabelFulltextKeyColumn
  • TabelFulltextTertundaPerubahan
  • TabelFulltextPopulateStatus
  • 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
  • Kardinalitas
  • TableTemporalType

Contoh Properti Ekstra

Berikut adalah contoh yang menunjukkan properti tambahan yang digunakan.

GUNAKAN WideWorldImportersDW;DECLARE @objectId int =OBJECT_ID(N'Integration.GenerateDateDimensionColumns');SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') SEBAGAI Tipe Dasar, OBJECTPROPERTYEX(@objectPrecise') AS(@IdPreciseId, 'IsdId , 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') SEBAGAI TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') SEBAGAI UserDataAccess, OBJECTPROPERTYEX, 
 Hasil (menggunakan keluaran vertikal):

Tipe Dasar | IFIsPrecise | 0SystemDataAccess | 1TabelFullTextSemanticExtraction | 0UserDataAccess | 1 Kardinalitas | NULL

Dalam hal ini, objek adalah fungsi bernilai tabel, dan mengembalikan data untuk lima dari enam properti.

Sekarang mari kita berikan nama tabel untuk melihat apakah kita bisa mendapatkan nilai kardinalitas.

GUNAKAN WideWorldImportersDW;DECLARE @objectId int =OBJECT_ID(N'Dimension.City');SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') SEBAGAI BaseType, OBJECTPROPERTYEX(@objectId, 'IsPrecise') AS IsPrecise, OBJECT , 'SystemDataAccess') SEBAGAI SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'TableFullTextSemanticExtraction') AS TableFullTextSemanticExtraction, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') SEBAGAI UserDataAccess, OBJECTPROPERTYEX, 
 Hasil (menggunakan keluaran vertikal):

Tipe Dasar | U IsPrecise | NULLSystemDataAccess | NULLTableFullTextSemanticExtraction | 0UserDataAccess | NULLKardinalitas | 116295

Kali ini kita mendapatkan NULL untuk tiga properti, tetapi kita mendapatkan nilai untuk properti 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. Cara Memasukkan Hasil Prosedur Tersimpan ke Tabel Sementara di SQL Server

  2. Pelajari Tentang Cara Menggunakan SQL Server Management Studio

  3. DEGREES() Contoh di SQL Server

  4. Pivot data di T-SQL

  5. Dapatkan Jumlah Upaya Login yang Gagal untuk Login karena Kata Sandi yang Salah di SQL Server (T-SQL)