Di SQL Server Anda dapat menggunakan sp_tables_ex
prosedur tersimpan sistem untuk mengembalikan informasi tabel tentang tabel dari server tertaut yang ditentukan.
Cara paling sederhana untuk menjalankan prosedur tersimpan ini adalah dengan meneruskan nama server yang ditautkan. Melakukan itu akan mengembalikan semua tabel dari database default di server tertaut yang ditentukan, termasuk tabel dan tampilan sistem. Ini bisa menjadi daftar besar.
Anda juga memiliki opsi untuk menentukan database yang berbeda dan/atau skema tabel tertentu. Anda juga dapat memfilter hasil berdasarkan jenis tabel (mis. tabel, tampilan, tabel sistem, dll.).
Sintaks
Sintaksnya seperti ini:
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
argumen adalah satu-satunya argumen yang diperlukan. Ini adalah nama server tertaut yang Anda inginkan informasi tabelnya.
Argumen lainnya adalah opsional, dan saya membahasnya dalam contoh berikut. Untuk informasi selengkapnya tentang argumen ini, lihat dokumentasi Microsoft.
Contoh 1 – Kembalikan semua Tabel
Contoh berikut mengembalikan semua tabel, tampilan, tabel sistem, alias, dll dari database default di server tertaut yang disebut Homer.
EXEC sp_tables_ex 'Homer';
Ini mengembalikan ratusan baris di sistem saya, jadi saya tidak akan mencantumkan hasilnya dalam contoh ini. Ingatlah, sebagian besar baris tersebut adalah tabel sistem dan tampilan sistem.
Ini juga bisa dilakukan seperti ini:
EXEC sp_tables_ex @table_server = 'Homer';
Contoh 2 – Tentukan Database yang Berbeda
Contoh berikut menetapkan bahwa WideWorldImportersDW
database harus digunakan.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW';
Sekali lagi, ini mengembalikan ratusan baris, jadi saya tidak akan mencantumkan hasilnya.
Contoh 3 – Mengembalikan Tabel Tertentu
Dalam contoh ini, saya mengembalikan informasi tentang tabel tertentu.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'Music', @table_name = 'Artists';
Hasil:
+-------------+---------------+--------------+--------------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------+---------------+--------------+--------------+-----------| | Music | dbo | Artists | TABLE | NULL | +-------------+---------------+--------------+--------------+-----------+
Contoh 4 – Hanya Menampilkan Tampilan
Dalam contoh ini, saya menetapkan bahwa hanya tampilan yang harus dikembalikan.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'Music', @table_type = 'VIEW';
Hasil:
+-------------+---------------+--------------+--------------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------+---------------+--------------+--------------+-----------+
Perhatikan bahwa ini tidak termasuk tampilan sistem. Jika saya ingin mengembalikan tampilan sistem, saya akan menggunakan @table_type = 'SYSTEM VIEW'
(dan kumpulan hasil akan jauh lebih besar).
@table_type
argumen menerima jenis berikut:ALIAS
, GLOBAL TEMPORARY
, LOCAL TEMPORARY
, SYNONYM
, SYSTEM TABLE
, SYSTEM VIEW
, TABLE
, dan VIEW
.
Contoh 5 – Tentukan Skema Tabel
Contoh berikut mempersempit hasil ke skema tabel tertentu (Dimension
) dalam WideWorldImportersDW
basis data.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_schema = 'Dimension';
Hasil:
+----------------------+---------------+------------------+--------------+-----------+ | 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 | +----------------------+---------------+------------------+--------------+-----------+
Contoh 6 – Karakter Wildcard
@fUsePattern
argumen memungkinkan Anda untuk menentukan apakah %
, _
, [
, dan ]
karakter ditafsirkan sebagai karakter wildcard.
Nilai defaultnya adalah 1
, yang berarti bahwa mereka adalah ditafsirkan sebagai karakter wildcard. Anda dapat menentukan 0
untuk menentukan bahwa mereka harus tidak ditafsirkan sebagai karakter wildcard.
Berikut ini contoh penggunaan karakter wildcard:
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_name = 'C%', @table_type = 'TABLE', @fUsePattern = 1;
Hasil:
+----------------------+---------------+------------------+--------------+-----------+ | 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 | +----------------------+---------------+------------------+--------------+-----------+
Dan inilah yang terjadi jika saya tidak menentukan karakter wildcard:
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_name = 'C%', @table_type = 'TABLE', @fUsePattern = 0;
Hasil:
(0 rows affected) Time: 0.324s