sql >> データベース >  >> RDS >> Sqlserver

SQL Serverのリンクサーバーからテーブルのリストを返す(T-SQLの例)

    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
    

    1. SQLServerのデッドロックの構造とそれらを回避するための最良の方法

    2. java.lang.UnsatisfiedLinkError:Javaにocijdbc11がありません。 library.path

    3. 私のSQL結果を複製する方法は?

    4. ドッキングされたPostgreSQLデータベースのバックアップ/復元