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
, TABLE
và VIEW
.
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 %
, _
, [
và ]
ký tự được hiểu là ký tự đại diện.
Giá trị mặc định là 1
, có nghĩa là chúng là đượ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