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

Trả lại danh sách các bảng từ một máy chủ được liên kết trong SQL Server (ví dụ T-SQL)

Trong SQL Server, bạn có thể sử dụng sp_tables_ex hệ thống lưu trữ thủ tục để trả về thông tin bảng về các bảng từ một máy chủ được liên kết cụ thể.

Cách đơn giản nhất để thực hiện thủ tục được lưu trữ này là chuyển tên của máy chủ được liên kết. Làm điều đó sẽ trả về tất cả các bảng từ cơ sở dữ liệu mặc định trên máy chủ được liên kết được chỉ định, bao gồm các bảng và dạng xem hệ thống. Đây có thể là một danh sách lớn.

Bạn cũng có tùy chọn chỉ định một cơ sở dữ liệu khác và / hoặc một lược đồ bảng cụ thể. Bạn cũng có thể lọc kết quả dựa trên loại bảng (ví dụ:bảng, chế độ xem, bảng hệ thống, v.v.).

Cú pháp

Cú pháp như sau:

sp_tables_ex [ @table_server = ] 'table_server'   
     [ , [ @table_name = ] 'table_name' ]   
     [ , [ @table_schema = ] 'table_schema' ]  
     [ , [ @table_catalog = ] 'table_catalog' ]   
     [ , [ @table_type = ] 'table_type' ]   
     [ , [@fUsePattern = ] 'fUsePattern' ]

@table_server đối số là đối số bắt buộc duy nhất. Đây là tên của máy chủ được liên kết mà bạn muốn có thông tin bảng.

Các đối số khác là tùy chọn và tôi trình bày chúng trong các ví dụ sau. Để biết thêm thông tin về các đối số này, hãy xem tài liệu của Microsoft.

Ví dụ 1 - Trả lại tất cả các Bảng

Ví dụ sau trả về tất cả các bảng, dạng xem, bảng hệ thống, bí danh, v.v. từ cơ sở dữ liệu mặc định trên máy chủ được liên kết có tên Homer.

EXEC sp_tables_ex 'Homer';

Điều này trả về hàng trăm hàng trên hệ thống của tôi, vì vậy tôi sẽ không liệt kê kết quả trong ví dụ này. Lưu ý rằng hầu hết các hàng đó là bảng hệ thống và chế độ xem hệ thống.

Điều này cũng có thể được thực hiện như thế này:

EXEC sp_tables_ex @table_server = 'Homer';

Ví dụ 2 - Chỉ định một cơ sở dữ liệu khác

Ví dụ sau chỉ định rằng WideWorldImportersDW cơ sở dữ liệu nên được sử dụng.

EXEC sp_tables_ex 
  @table_server = 'Homer',   
  @table_catalog = 'WideWorldImportersDW';

Một lần nữa, điều này trả về hàng trăm hàng, vì vậy tôi sẽ không liệt kê kết quả.

Ví dụ 3 - Trả về một bảng cụ thể

Trong ví dụ này, tôi trả lại thông tin về một bảng cụ thể.

EXEC sp_tables_ex 
  @table_server = 'Homer', 
  @table_catalog = 'Music',
  @table_name = 'Artists';

Kết quả:

+-------------+---------------+--------------+--------------+-----------+
| TABLE_CAT   | TABLE_SCHEM   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|-------------+---------------+--------------+--------------+-----------|
| Music       | dbo           | Artists      | TABLE        | NULL      |
+-------------+---------------+--------------+--------------+-----------+

Ví dụ 4 - Chỉ trả lại các lượt xem

Trong ví dụ này, tôi chỉ định rằng chỉ các lượt xem mới được trả về.

EXEC sp_tables_ex 
  @table_server = 'Homer', 
  @table_catalog = 'Music',
  @table_type = 'VIEW';

Kết quả:

+-------------+---------------+--------------+--------------+-----------+
| TABLE_CAT   | TABLE_SCHEM   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|-------------+---------------+--------------+--------------+-----------|
| Music       | dbo           | BluesAlbums  | VIEW         | NULL      |
| Music       | dbo           | JazzAlbums   | VIEW         | NULL      |
| Music       | dbo           | RockAlbums   | VIEW         | NULL      |
+-------------+---------------+--------------+--------------+-----------+

Lưu ý rằng những điều này không bao gồm các chế độ xem hệ thống. Nếu tôi muốn trả lại các chế độ xem hệ thống, tôi đã sử dụng @table_type = 'SYSTEM VIEW' (và tập kết quả sẽ lớn hơn nhiều).

@table_type đối số chấp nhận các loại sau:ALIAS , GLOBAL TEMPORARY , LOCAL TEMPORARY , SYNONYM , SYSTEM TABLE , SYSTEM VIEW , TABLEVIEW .

Ví dụ 5 - Chỉ định một lược đồ bảng

Ví dụ sau đây thu hẹp kết quả vào một lược đồ bảng cụ thể (Dimension ) trong WideWorldImportersDW cơ sở dữ liệu.

EXEC sp_tables_ex 
  @table_server = 'Homer',   
  @table_catalog = 'WideWorldImportersDW',   
  @table_schema = 'Dimension';

Kết quả:

+----------------------+---------------+------------------+--------------+-----------+
| TABLE_CAT            | TABLE_SCHEM   | TABLE_NAME       | TABLE_TYPE   | REMARKS   |
|----------------------+---------------+------------------+--------------+-----------|
| WideWorldImportersDW | Dimension     | City             | TABLE        | NULL      |
| WideWorldImportersDW | Dimension     | Customer         | TABLE        | NULL      |
| WideWorldImportersDW | Dimension     | Date             | TABLE        | NULL      |
| WideWorldImportersDW | Dimension     | Employee         | TABLE        | NULL      |
| WideWorldImportersDW | Dimension     | Payment Method   | TABLE        | NULL      |
| WideWorldImportersDW | Dimension     | Stock Item       | TABLE        | NULL      |
| WideWorldImportersDW | Dimension     | Supplier         | TABLE        | NULL      |
| WideWorldImportersDW | Dimension     | Transaction Type | TABLE        | NULL      |
+----------------------+---------------+------------------+--------------+-----------+

Ví dụ 6 - Các ký tự đại diện

@fUsePattern đối số cho phép bạn chỉ định có hay không % , _ , [] ký tự được hiểu là ký tự đại diện.

Giá trị mặc định là 1 , có nghĩa là chúng được hiểu là các ký tự đại diện. Bạn có thể chỉ định 0 để chỉ rõ rằng họ không nên không được hiểu là các ký tự đại diện.

Dưới đây là một ví dụ về việc sử dụng ký tự đại diện:

EXEC sp_tables_ex 
  @table_server = 'Homer', 
  @table_catalog = 'WideWorldImportersDW',
  @table_name = 'C%',
  @table_type = 'TABLE',
  @fUsePattern = 1;

Kết quả:

+----------------------+---------------+------------------+--------------+-----------+
| TABLE_CAT            | TABLE_SCHEM   | TABLE_NAME       | TABLE_TYPE   | REMARKS   |
|----------------------+---------------+------------------+--------------+-----------|
| WideWorldImportersDW | Dimension     | City             | TABLE        | NULL      |
| WideWorldImportersDW | Dimension     | Customer         | TABLE        | NULL      |
| WideWorldImportersDW | Integration   | City_Staging     | TABLE        | NULL      |
| WideWorldImportersDW | Integration   | Customer_Staging | TABLE        | NULL      |
+----------------------+---------------+------------------+--------------+-----------+

Và đây là điều sẽ xảy ra nếu tôi không chỉ định ký tự đại diện:

EXEC sp_tables_ex 
  @table_server = 'Homer', 
  @table_catalog = 'WideWorldImportersDW',
  @table_name = 'C%',
  @table_type = 'TABLE',
  @fUsePattern = 0;

Kết quả:

(0 rows affected)
Time: 0.324s

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận ngày cuối cùng của tháng trong SQL

  2. Sự cố khi mở tệp MDF vì nó báo lỗi SQL 5171? - Bài đăng của khách của Andre Williams

  3. Những điều bạn nên biết với NOCHECK khi kích hoạt ràng buộc CHECK trong SQL Server

  4. Nhập nhiều tệp CSV vào SQL Server từ một thư mục

  5. Cột không hợp lệ trong danh sách chọn vì nó không được chứa trong hàm tổng hợp hoặc mệnh đề GROUP BY