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

Perbedaan Antara sys.sql_modules, sys.system_sql_modules, &sys.all_sql_modules di SQL Server

Di SQL Server sys.sql_modules , sys.system_sql_modules , dan sys.all_sql_modules tampilan katalog sistem mengembalikan metadata tentang modul yang ditentukan bahasa SQL di SQL Server.

Namun, ada perbedaan di antara mereka.

Berikut definisi resmi dari setiap tampilan:

sys.sql_modules
Mengembalikan baris untuk setiap objek yang merupakan modul yang ditentukan bahasa SQL di SQL Server, termasuk fungsi skalar yang ditentukan pengguna yang dikompilasi secara asli. Objek tipe P, RF, V, TR, FN, IF, TF, dan R memiliki modul SQL terkait. Default yang berdiri sendiri, objek tipe D, juga memiliki definisi modul SQL dalam tampilan ini.
sys.system_sql_modules
Mengembalikan satu baris per objek sistem yang berisi modul yang ditentukan bahasa SQL. Objek sistem tipe FN, IF, P, PC, TF, V memiliki modul SQL terkait.
sys.all_sql_modules
Mengembalikan gabungan sys.sql_modules dan sys.system_sql_modules .

Dengan kata lain, tampilan terakhir menggabungkan hasil dari dua tampilan sebelumnya (mengembalikan kedua sistem dan modul yang ditentukan pengguna).

Contoh

Berikut adalah contoh yang menunjukkan perbedaan hasil yang ditampilkan oleh tampilan ini.

USE Music;

SELECT COUNT(*) AS sql_modules
FROM sys.sql_modules;

SELECT COUNT(*) AS system_sql_modules
FROM sys.system_sql_modules;

SELECT COUNT(*) AS all_sql_modules
FROM sys.all_sql_modules;

Hasil:

+---------------+
| sql_modules   |
|---------------|
| 9             |
+---------------+
(1 row affected)
+----------------------+
| system_sql_modules   |
|----------------------|
| 2020                 |
+----------------------+
(1 row affected)
+-------------------+
| all_sql_modules   |
|-------------------|
| 2029              |
+-------------------+
(1 row affected)

Dalam hal ini, hanya ada 9 modul yang ditentukan pengguna dalam database ini. Sisanya dari modul sistem.

Jika kita menambahkan hasil dari dua kueri pertama bersama-sama, kita mendapatkan hasil yang sama sebagai sys.all_sql_modules :

SELECT 
(SELECT COUNT(*) FROM sys.sql_modules) +
(SELECT COUNT(*) FROM sys.system_sql_modules)
AS Result;

Hasil:

+----------+
| Result   |
|----------|
| 2029     |
+----------+

  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 mudah memilih kolom kanan sebagai Kunci Utama untuk tabel yang diberikan

  2. SQL OUTPUT Stored Procedures tidak berfungsi dengan ExecuteReader

  3. 5 Cara Mendapatkan Nama Bulan Pendek dari Tanggal di SQL Server

  4. Jenis Kursor SQL Server - Hanya Meneruskan Kursor Statis | Tutorial SQL Server / Tutorial TSQL

  5. Menjelajahi Opsi Tunggu Kunci Prioritas Rendah di SQL Server 2014 CTP1