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

Gunakan OBJECTPROPERTY() untuk Mengetahui apakah Tabel adalah Tabel Sistem di SQL Server

OBJECTPROPERTY() fungsi di SQL Server memungkinkan Anda untuk memeriksa objek untuk properti tertentu.

Anda dapat menggunakan fungsi ini untuk memeriksa apakah suatu objek adalah tabel sistem atau bukan. Untuk melakukannya, berikan ID objek sebagai argumen pertama, dan IsSystemTable sebagai argumen kedua. Fungsi mengembalikan 1 atau 0 tergantung pada apakah itu tabel sistem atau bukan (1 artinya adalah tabel sistem, dan 0 berarti tidak).

Contoh 1 – Penggunaan Dasar

Berikut contoh cepat untuk ditunjukkan.

SELECT OBJECTPROPERTY(3, 'IsSystemTable') AS [IsSystemTable];

Hasil:

+-----------------+
| IsSystemTable   |
|-----------------|
| 1               |
+-----------------+

Dalam hal ini, objek adalah tabel sistem.

Contoh 2 – Objek BUKAN Tabel Sistem

Inilah yang terjadi jika objek bukan tabel sistem.

SELECT OBJECTPROPERTY(1013578649, 'IsSystemTable') AS [IsSystemTable];

Hasil:

+-----------------+
| IsSystemTable   |
|-----------------|
| 0               |
+-----------------+

Dalam hal ini, database tidak sebenarnya memiliki objek dengan ID itu, tetapi objek tersebut sebenarnya adalah tabel yang ditentukan pengguna, jadi saya mendapatkan hasil negatif.

Ini dia lagi menggunakan OBJECT_ID() untuk mendapatkan ID dari nama objek.

SELECT 
  OBJECT_ID('Dimension.City') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsSystemTable') AS [IsSystemTable],
  OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsUserTable') AS [IsUserTable];

Hasil:

+-------------+-----------------+---------------+
| Object ID   | IsSystemTable   | IsUserTable   |
|-------------+-----------------+---------------|
| 1013578649  | 0               | 1             |
+-------------+-----------------+---------------+

Saya juga memeriksa untuk melihat apakah objek adalah tabel yang ditentukan pengguna, dan hasilnya positif.

Contoh 3 – Objek Tidak Ada

SQL Server mengasumsikan bahwa ID objek dalam konteks database saat ini. Jika Anda memasukkan ID objek dari database yang berbeda, Anda akan mendapatkan hasil NULL atau Anda akan mendapatkan hasil yang salah.

SELECT 
  OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsSystemTable') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'IsSystemTable') AS [12345678];

Hasil:

+-----------------+------------+
| InvalidObject   | 12345678   |
|-----------------+------------|
| NULL            | NULL       |
+-----------------+------------+

Dalam hal ini database tidak berisi objek dengan nama atau ID itu, jadi saya mendapatkan hasil NULL.

Anda juga akan mendapatkan NULL pada kesalahan atau jika Anda tidak memiliki izin untuk melihat objek.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Impor file CSV ke SQL Server

  2. Bagaimana cara mendapatkan daftar kata yang berbeda yang digunakan di semua Catatan Bidang menggunakan MS SQL?

  3. Menggunakan merge..output untuk mendapatkan pemetaan antara source.id dan target.id

  4. Permintaan SQL untuk memilih tanggal di antara dua tanggal

  5. 4 Alasan Mengapa Anda Harus Memprioritaskan Pemantauan Database dalam Perencanaan 2020