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

Sự khác biệt giữa sys.sql_modules, sys.system_sql_modules và sys.all_sql_modules trong SQL Server

Trong SQL Server, sys.sql_modules , sys.system_sql_modulessys.all_sql_modules chế độ xem danh mục hệ thống trả về siêu dữ liệu về các mô-đun do ngôn ngữ SQL xác định trong SQL Server.

Tuy nhiên, có sự khác biệt giữa chúng.

Đây là định nghĩa chính thức của từng chế độ xem:

sys.sql_modules
Trả về một hàng cho mỗi đối tượng là mô-đun do ngôn ngữ SQL xác định trong SQL Server, bao gồm cả hàm vô hướng được biên dịch nguyên bản do người dùng xác định. Các đối tượng kiểu P, RF, V, TR, FN, IF, TF và R có một mô-đun SQL được liên kết. Mặc định độc lập, đối tượng kiểu D, cũng có định nghĩa mô-đun SQL trong dạng xem này.
sys.system_sql_modules
Trả về một hàng cho mỗi đối tượng hệ thống có chứa mô-đun do ngôn ngữ SQL xác định. Các đối tượng hệ thống kiểu FN, IF, P, PC, TF, V có một mô-đun SQL liên kết.
sys.all_sql_modules
Trả về kết hợp của sys.sql_modulessys.system_sql_modules .

Nói cách khác, chế độ xem cuối cùng kết hợp các kết quả của hai chế độ xem trước đó (nó trả về cả hệ thống mô-đun do người dùng xác định).

Ví dụ

Dưới đây là một ví dụ chứng minh sự khác biệt về kết quả do các chế độ xem này trả về.

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;

Kết quả:

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

Trong trường hợp này, chỉ có 9 mô-đun do người dùng định nghĩa trong cơ sở dữ liệu này. Phần còn lại là từ các mô-đun hệ thống.

Nếu chúng tôi cộng kết quả của hai truy vấn đầu tiên với nhau, chúng tôi sẽ nhận được cùng một kết quả là sys.all_sql_modules :

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

Kết quả:

+----------+
| 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. Cách tách một chuỗi sau ký tự cụ thể trong SQL Server và cập nhật giá trị này vào cột cụ thể

  2. RADIANS () Ví dụ trong SQL Server

  3. Làm cách nào chúng ta có thể xem phần thân của thủ tục được lưu trữ được mã hóa trong SSMS?

  4. Mệnh đề WHERE trong SQL so khớp các giá trị với dấu cách ở cuối

  5. Toán tử logic IN là gì trong SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 122