Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengembalikan Daftar Tabel dari Server Tertaut di SQL Server (Contoh T-SQL)

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sp_add_schedule vs sp_add_jobschedule di SQL Server:Apa Bedanya?

  2. Antrian dalam Pesan WCF OneWay menggunakan Layanan Windows dan SQL Server

  3. MONTH() Contoh di SQL Server (T-SQL)

  4. Pivot beberapa kolom berdasarkan satu kolom di SQL Server

  5. Bagaimana memulihkan database dari C#