Ba trong số các dạng xem danh mục hệ thống trong SQL Server bao gồm sys.columns
, sys.system_columns
và sys.all_columns
.
Ba chế độ xem danh mục này đều cung cấp siêu dữ liệu về các cột trong cơ sở dữ liệu, nhưng có sự khác biệt giữa chúng.
Đây là những gì mỗi người làm:
-
sys.columns
- Trả về các cột từ các đối tượng do người dùng xác định. Điều này bao gồm các cột từ các bảng cơ sở của hệ thống.
-
sys.system_columns
- Trả về các cột từ các đối tượng hệ thống.
-
sys.all_columns
- Trả về các cột từ tất cả các đối tượng hệ thống và do người dùng xác định.
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 đó.
Các loại đối tượng sau có thể có các cột:
- Các hàm lắp ráp có giá trị bảng (FT)
- Các hàm SQL có giá trị trong bảng nội tuyến (IF)
- Bảng nội bộ (CNTT)
- Bảng hệ thống (S)
- Các hàm SQL có giá trị bảng (TF)
- Bảng người dùng (U)
- Lượt xem (V)
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ề.
SỬ DỤNG Nhạc; CHỌN COUNT (*) NHƯ cộtFROM sys.columns; CHỌN COUNT (*) NHƯ system_columnsKết quả:
+ ----------- + | cột || ----------- || 1025 | + ----------- + (1 hàng bị ảnh hưởng) + ------------------ + | system_columns || ------------------ || 8982 | + ------------------ + (1 hàng bị ảnh hưởng) + --------------- + | tất cả các cột || --------------- || 10007 | + --------------- + (1 hàng bị ảnh hưở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_columns
:SỬ DỤNG Nhạc; CHỌN (CHỌN ĐẾM (*) TỪ sys.columns) + (CHỌN ĐẾM (*) TỪ sys.system_columns) AS Kết quả;Kết quả:
+ ---------- + | Kết quả || ---------- || 10007 | + ---------- +