SQL Serverでは、 sp_tables_ex
を使用できます 指定されたリンクサーバーからテーブルに関するテーブル情報を返すシステムストアドプロシージャ。
このストアドプロシージャを実行する最も簡単な方法は、リンクサーバーの名前を渡すことです。これを行うと、システムテーブルとビューを含む、指定されたリンクサーバー上のデフォルトデータベースからすべてのテーブルが返されます。これは大きなリストになる可能性があります。
別のデータベースや特定のテーブルスキーマを指定するオプションもあります。テーブルの種類(テーブル、ビュー、システムテーブルなど)に基づいて結果をフィルタリングすることもできます。
構文
構文は次のようになります:
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
引数は唯一の必須の引数です。これは、テーブル情報が必要なリンクサーバーの名前です。
他の引数はオプションであり、次の例でそれらをカバーします。これらの引数の詳細については、Microsoftのドキュメントを参照してください。
例1-すべてのテーブルを返す
次の例では、Homerというリンクサーバー上のデフォルトデータベースからすべてのテーブル、ビュー、システムテーブル、エイリアスなどを返します。
EXEC sp_tables_ex 'Homer';
これにより、システムに数百行が返されるため、この例では結果をリストしません。これらの行のほとんどはシステムテーブルとシステムビューであることに注意してください。
これは次のように行うこともできます:
EXEC sp_tables_ex @table_server = 'Homer';
例2–別のデータベースを指定する
次の例では、 WideWorldImportersDW
データベースを使用する必要があります。
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW';
繰り返しになりますが、これは数百行を返すため、結果を一覧表示しません。
例3–特定のテーブルを返す
この例では、特定のテーブルに関する情報を返します。
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'Music', @table_name = 'Artists';
結果:
+-------------+---------------+--------------+--------------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------+---------------+--------------+--------------+-----------| | Music | dbo | Artists | TABLE | NULL | +-------------+---------------+--------------+--------------+-----------+
例4–リターンビューのみ
この例では、ビューのみを返すように指定しています。
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'Music', @table_type = 'VIEW';
結果:
+-------------+---------------+--------------+--------------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------+---------------+--------------+--------------+-----------+
これらにはシステムビューが含まれていないことに注意してください。システムビューを返したい場合は、 @table_type ='SYSTEM VIEW'
を使用します。 (そして結果セットははるかに大きくなります。)
@table_type
引数は次のタイプを受け入れます: ALIAS
、 GLOBAL TEMPORARY
、 LOCAL TEMPORARY
、 SYNONYM
、 SYSTEM TABLE
、システムビュー
、 TABLE
、および VIEW
。
例5–テーブルスキーマを指定する
次の例では、結果を特定のテーブルスキーマ( Dimension
)に絞り込みます。 ) WideWorldImportersDW
内 データベース。
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_schema = 'Dimension';
結果:
+----------------------+---------------+------------------+--------------+-----------+ | 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 | +----------------------+---------------+------------------+--------------+-----------+
例6–ワイルドカード文字
@fUsePattern
引数を使用すると、%
かどうかを指定できます 、 _
、[コード> 、および
]
文字はワイルドカード文字として解釈されます。
デフォルト値は1
です 、つまり、 ワイルドカード文字として解釈されます。 0
を指定できます すべきではないことを指定する ワイルドカード文字として解釈されます。
ワイルドカード文字の使用例は次のとおりです。
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_name = 'C%', @table_type = 'TABLE', @fUsePattern = 1;
結果:
+----------------------+---------------+------------------+--------------+-----------+ | 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 | +----------------------+---------------+------------------+--------------+-----------+
ワイルドカード文字を指定しないとどうなりますか:
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_name = 'C%', @table_type = 'TABLE', @fUsePattern = 0;
結果:
(0 rows affected) Time: 0.324s