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

3 cách đếm số lượng bảng hệ thống trong cơ sở dữ liệu máy chủ SQL

Dưới đây là bài viết trình bày ba cách để nhanh chóng xác định có bao nhiêu bảng hệ thống trong cơ sở dữ liệu hiện tại trong SQL Server.

Cả ba tùy chọn đều sử dụng COUNT() hoạt động trong khi truy vấn sys.objects xem danh mục hệ thống. Tất cả đều dẫn đến cùng một đầu ra, vì vậy bạn thực sự không cần phải bỏ qua tùy chọn đầu tiên. Nhưng dù sao thì tôi cũng sẽ liệt kê chúng.

Tùy chọn 1 - Theo loại

Cách ngắn gọn nhất để làm điều này là lọc theo loại type cột.

USE Music;
SELECT COUNT(*) AS [Number of System Tables]
FROM sys.objects 
WHERE type = 'S';

Kết quả:

+---------------------------+
| Number of System Tables   |
|---------------------------|
| 72                        |
+---------------------------+

Ở đây, tôi lọc theo type trong tổng số S . S là viết tắt của “Bảng cơ sở hệ thống”.

Nếu tôi chuyển sang cái chính cơ sở dữ liệu, tôi nhận được một kết quả khác:

USE Master;
SELECT COUNT(*) AS [Number of System Tables]
FROM sys.objects 
WHERE type = 'S';

Kết quả:

+---------------------------+
| Number of System Tables   |
|---------------------------|
| 79                        |
+---------------------------+

Điều này là do bậc thầy cơ sở dữ liệu chứa một số bảng hệ thống không có trong các cơ sở dữ liệu khác.

Chúng ta có thể chạy truy vấn sau để lấy tên:

USE master;
SELECT name 
FROM sys.objects
WHERE type = 'S' 
AND name NOT IN (
  SELECT name FROM model.sys.objects WHERE type = 'S' 
);

Kết quả:

+--------------------------+
| name                     |
|--------------------------|
| sysextendedrecoveryforks |
| syslogshippers           |
| sysmatrixageforget       |
| sysmatrixages            |
| sysmatrixbricks          |
| sysmatrixconfig          |
| sysmatrixmanagers        |
+--------------------------+

Trong trường hợp này, tôi so sánh cái chính cơ sở dữ liệu cho mô hình cơ sở dữ liệu. Bạn có thể chỉ định rõ ràng một cơ sở dữ liệu khác bằng cách hoán đổi model với tên của cơ sở dữ liệu khác.

Tùy chọn 2 - Theo "Loại mô tả"

Một tùy chọn khác là lọc theo type_desc thay vì type cột.

USE Music;
SELECT COUNT(*) AS [Number of System Tables]
FROM sys.objects 
WHERE type_desc = 'SYSTEM_TABLE';

Kết quả:

+---------------------------+
| Number of System Tables   |
|---------------------------|
| 72                        |
+---------------------------+

Tùy chọn 3 - Theo OBJECTPROPERTY ()

Nếu vì lý do nào đó mà bạn thấy hai tùy chọn trước đó không phù hợp, bạn có thể thử sử dụng OBJECTPROPERTY() hàm số.

Hàm này chấp nhận hai đối số:một ID đối tượng và một thuộc tính. ID đối tượng có thể là ID bảng và thuộc tính có thể là IsSystemTable , xác định đối tượng có phải là bảng hệ thống hay không.

Do đó, bạn có thể làm như sau:

USE Music;
SELECT COUNT(*) AS [Number of System Tables]
FROM sys.objects 
WHERE OBJECTPROPERTY(object_id, 'IsSystemTable') = 1;

Kết quả:

+---------------------------+
| Number of System Tables   |
|---------------------------|
| 72                        |
+---------------------------+

Liệt kê các bảng

Bạn có thể sửa đổi ba tùy chọn nếu muốn liệt kê các bảng thay vì chỉ đếm chúng. Để thực hiện việc này, chỉ cần thay thế COUNT(*) AS [Number of User Tables] với * . Ngoài ra, bạn có thể đặt tên rõ ràng cho các cột mà bạn muốn trả về.

Đếm số bảng do người dùng xác định

Nếu bạn cần tìm hiểu số lượng người dùng bảng, xem 5 cách đếm số lượng bảng do người dùng xác định trong SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao CTE lại tốt hơn con trỏ / bảng dẫn xuất / truy vấn con / bảng tạm thời, v.v.?

  2. Làm cách nào để tạo khóa ngoại trong SQL Server?

  3. SQL Server 2017 sao lưu -3

  4. GETDATE () Ví dụ trong SQL Server (T-SQL)

  5. Cách CHỌN TỪ thủ tục được lưu trữ