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

4 cách liệt kê tất cả các dạng xem trong cơ sở dữ liệu máy chủ SQL

Bài viết này trình bày bốn cách để trả về danh sách dạng xem do người dùng xác định trong cơ sở dữ liệu SQL Server.

Nếu bạn chỉ muốn xem các chế độ xem hệ thống hoặc cả do người dùng xác định chế độ xem hệ thống, hãy xem Sự khác biệt giữa sys.views, sys.system_views và sys.all_views trong SQL Server.

Tùy chọn 1 - Chế độ xem lược đồ thông tin VIEWS

Bạn có thể sử dụng VIEWS chế độ xem lược đồ thông tin để nhận danh sách tất cả các chế độ xem do người dùng xác định trong cơ sở dữ liệu.

USE Music;
SELECT 
  TABLE_SCHEMA,
  TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS;

Kết quả:

+----------------+--------------+
| TABLE_SCHEMA   | TABLE_NAME   |
|----------------+--------------|
| dbo            | RockAlbums   |
| dbo            | JazzAlbums   |
| dbo            | BluesAlbums  |
+----------------+--------------+

Trả lại Định nghĩa của Chế độ xem

INFORMATION_SCHEMA.VIEWS chế độ xem cũng có VIEW_DEFINITION , vì vậy bạn có thể dễ dàng trả lại định nghĩa của từng chế độ xem nếu cần.

SELECT VIEW_DEFINITION
FROM INFORMATION_SCHEMA.VIEWS;

Tùy chọn 2 - Chế độ xem danh mục hệ thống sys.views

Một cách khác để trả về danh sách các chế độ xem là truy vấn sys.views chế độ xem danh mục hệ thống.

USE Music;
SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  Name
FROM sys.views;

Kết quả:

+----------+-------------+
| Schema   | Name        |
|----------+-------------|
| dbo      | RockAlbums  |
| dbo      | JazzAlbums  |
| dbo      | BluesAlbums |
+----------+-------------+

Trả lại Định nghĩa của Chế độ xem

sys.view chế độ xem không bao gồm một cột cho định nghĩa của đối tượng. Nếu bạn muốn trả lại định nghĩa của từng chế độ xem, bạn có thể kết hợp nó với sys.sql_modules chế độ xem hệ thống.

Ví dụ:

SELECT definition
FROM sys.views v
INNER JOIN sys.sql_modules m 
ON v.object_id = m.object_id;

Tùy chọn 3 - Chế độ xem danh mục hệ thống sys.objects

Một cách khác để trả về danh sách các dạng xem là truy vấn sys.objects chế độ xem danh mục hệ thống.

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  name
FROM sys.objects
WHERE type = 'V';

Kết quả:

+----------+-------------+
| Schema   | name        |
|----------+-------------|
| dbo      | RockAlbums  |
| dbo      | JazzAlbums  |
| dbo      | BluesAlbums |
+----------+-------------+

Loại V dành cho "Chế độ xem". Một cách khác để làm điều này là lọc theo type_desc cột:

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  name
FROM sys.objects
WHERE type_desc = 'VIEW';

Trả lại Định nghĩa của Chế độ xem

sys.objects chế độ xem không bao gồm một cột cho định nghĩa của đối tượng. Nếu bạn muốn trả lại định nghĩa của từng chế độ xem, bạn có thể kết hợp nó với sys.sql_modules chế độ xem hệ thống.

Ví dụ:

SELECT definition
FROM sys.objects o
INNER JOIN sys.sql_modules m 
ON o.object_id = m.object_id
WHERE type = 'V';

Tùy chọn 4 - Thủ tục lưu trữ sp_tables

sp_tables thủ tục được lưu trữ trả về một danh sách các đối tượng có thể được truy vấn trong môi trường hiện tại. Điều này bao gồm bất kỳ bảng hoặc dạng xem nào, ngoại trừ các đối tượng đồng nghĩa.

Bạn có thể thu hẹp kết quả thành chỉ các chế độ xem bằng @table_type tham số. Bạn cũng có thể thu hẹp nó thành chỉ một chủ sở hữu hoặc danh mục nhất định.

Việc thực thi đoạn mã sau sẽ trả về tất cả các chế độ xem trong cơ sở dữ liệu hiện tại - bao gồm cả các chế độ xem hệ thống.

EXEC sp_tables @table_type = "'VIEW'";

Tôi sẽ không trình bày kết quả ở đây vì đó là một danh sách dài.

Ở đây, nó được thu hẹp cho một chủ sở hữu cơ sở dữ liệu nhất định:

EXEC sp_tables 
  @table_owner = 'dbo',
  @table_type = "'VIEW'";

Kết quả:

+-------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER   | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|-------------------+---------------+--------------+--------------+-----------|
| Music             | dbo           | BluesAlbums  | VIEW         | NULL      |
| Music             | dbo           | JazzAlbums   | VIEW         | NULL      |
| Music             | dbo           | RockAlbums   | VIEW         | NULL      |
+-------------------+---------------+--------------+--------------+-----------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mọi Bảng Người dùng có nên có Chỉ mục được phân cụm không?

  2. Khởi động SQL Express từ WiX?

  3. SqlConnection SqlCommand SqlDataReader IDisposable

  4. Bạn có thể gọi một dịch vụ web từ mã TSQL không?

  5. Cách đặt giá trị mặc định cho cột hiện có