Jika Anda telah menggunakan T-SQL untuk sementara waktu, kemungkinan Anda menemukan sys.objects
tampilan katalog sistem, yang mengembalikan objek cakupan skema yang ditentukan pengguna dalam database.
Tetapi ada dua pandangan serupa lainnya yang mungkin Anda sadari atau tidak; sys.system_objects
dan sys.all_objects
.
Meskipun serupa, perbedaannya jelas, dan namanya membedakannya. Berikut definisi resmi dari ketiga tampilan tersebut:
sys.objects
- Berisi baris untuk setiap objek cakupan skema yang ditentukan pengguna yang dibuat dalam database.
sys.system_objects
- Berisi satu baris untuk semua objek sistem cakupan skema yang disertakan dengan SQL Server.
sys.all_objects
- Menampilkan
UNION
dari semua objek buatan pengguna dan objek sistem cakupan skema.
Dengan kata lain, tampilan terakhir menggabungkan hasil dari dua tampilan sebelumnya (mengembalikan kedua sistem dan objek yang ditentukan pengguna).
Contoh
Berikut adalah contoh yang menunjukkan perbedaan hasil yang ditampilkan oleh tampilan ini.
USE WideWorldImportersDW; SELECT COUNT(*) AS [sys.objects] FROM sys.objects; SELECT COUNT(*) AS [sys.system_objects] FROM sys.system_objects; SELECT COUNT(*) AS [sys.all_objects] FROM sys.all_objects; SELECT (SELECT COUNT(*) AS [sys.all_objects] FROM sys.all_objects) - (SELECT COUNT(*) AS [sys.system_objects] FROM sys.system_objects) AS [sys.all_objects MINUS sys.system_objects];
Hasil:
+---------------+ | sys.objects | |---------------| | 224 | +---------------+ (1 row affected) +----------------------+ | sys.system_objects | |----------------------| | 2205 | +----------------------+ (1 row affected) +-------------------+ | sys.all_objects | |-------------------| | 2429 | +-------------------+ (1 row affected)
Tampilan ini mengembalikan terlalu banyak baris bagi saya untuk dicantumkan di sini, jadi saya menggunakan COUNT()
untuk mengembalikan jumlah baris yang dikembalikan masing-masing.
Jika Anda pandai matematika, Anda akan segera melihat bahwa hitungan sys.all_objects
adalah jumlah dari sys.objects
dan sys.system_objects
.
Berikut kueri yang melakukan penambahan tersebut.
SELECT (SELECT COUNT(*) AS [sys.objects] FROM sys.objects) + (SELECT COUNT(*) AS [sys.system_objects] FROM sys.system_objects) AS [sys.objects PLUS sys.system_objects];
Hasil:
+---------------------------------------+ | sys.objects PLUS sys.system_objects | |---------------------------------------| | 2429 | +---------------------------------------+
Perhatikan bahwa visibilitas metadata dalam tampilan katalog terbatas pada keamanan yang dimiliki oleh pengguna atau yang telah diberikan izin kepada pengguna.