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

T-SQLを使用してSQLServerでリンクされたサーバーのリストを返す2つの方法

    Transact-SQLを使用してSQLServer内のすべてのリンクサーバーのリストを取得する必要がある場合は、次の2つの方法でこれを実行できます。

    最初の例では、sp_linkedserversを使用します リンクサーバーを返すためのシステムストアドプロシージャ。 2番目の例では、sys.serversを使用します システムカタログビュー。

    例1– sp_linkedservers ストアドプロシージャ

    sp_linkedservers システムストアドプロシージャは、ローカルサーバーで定義されたリンクサーバーのリストを返すために特別に設計されています。

    実行するには、次のようにします。

    EXEC sp_linkedservers;
    

    結果:

    +--------------+--------------------+---------------+------------------+----------------------+----------------+-----------+
    | SRV_NAME     | SRV_PROVIDERNAME   | SRV_PRODUCT   | SRV_DATASOURCE   | SRV_PROVIDERSTRING   | SRV_LOCATION   | SRV_CAT   |
    |--------------+--------------------+---------------+------------------+----------------------+----------------+-----------|
    | c1b060f68fcb | SQLNCLI            | SQL Server    | c1b060f68fcb     | NULL                 | NULL           | NULL      |
    | Homer        | SQLNCLI            |               | 172.17.0.2,1433  | NULL                 | NULL           | NULL      |
    +--------------+--------------------+---------------+------------------+----------------------+----------------+-----------+
    

    この場合、2つの行を取得します。実際、最初の行は私のローカルサーバーです。ローカルサーバーには「Homer」と呼ばれるリンクサーバーがあり、2行目に表示されます。

    例2– sys.servers システムビュー

    sys.servers システムカタログビューには、登録されているリンクサーバーまたはリモートサーバーごとの行と、 server_id を持つローカルサーバーの行が含まれます。 0の 。

    このビューはかなりの数の列を返すため、この例では垂直出力を使用して結果を表示します。

    例:

    SELECT * 
    FROM sys.servers;
    

    結果(垂直出力を使用):

    -[ RECORD 1 ]-------------------------
    server_id                                    | 0
    name                                         | c1b060f68fcb
    product                                      | SQL Server
    provider                                     | SQLNCLI
    data_source                                  | c1b060f68fcb
    location                                     | NULL
    provider_string                              | NULL
    catalog                                      | NULL
    connect_timeout                              | 0
    query_timeout                                | 0
    is_linked                                    | 0
    is_remote_login_enabled                      | 1
    is_rpc_out_enabled                           | 1
    is_data_access_enabled                       | 0
    is_collation_compatible                      | 0
    uses_remote_collation                        | 1
    collation_name                               | NULL
    lazy_schema_validation                       | 0
    is_system                                    | 0
    is_publisher                                 | 0
    is_subscriber                                | 0
    is_distributor                               | 0
    is_nonsql_subscriber                         | 0
    is_remote_proc_transaction_promotion_enabled | 0
    modify_date                                  | 2019-09-27 00:30:06.820
    is_rda_server                                | 0
    -[ RECORD 2 ]-------------------------
    server_id                                    | 1
    name                                         | Homer
    product                                      | 
    provider                                     | SQLNCLI
    data_source                                  | 172.17.0.2,1433
    location                                     | NULL
    provider_string                              | NULL
    catalog                                      | NULL
    connect_timeout                              | 0
    query_timeout                                | 0
    is_linked                                    | 1
    is_remote_login_enabled                      | 0
    is_rpc_out_enabled                           | 0
    is_data_access_enabled                       | 1
    is_collation_compatible                      | 0
    uses_remote_collation                        | 1
    collation_name                               | NULL
    lazy_schema_validation                       | 0
    is_system                                    | 0
    is_publisher                                 | 0
    is_subscriber                                | 0
    is_distributor                               | 0
    is_nonsql_subscriber                         | 0
    is_remote_proc_transaction_promotion_enabled | 1
    modify_date                                  | 2019-09-29 10:31:36.570
    is_rda_server                                | 0
    

    ビューを使用すると、より多くの情報を取得できます。

    もちろん、関心のある列のみを指定することもできます。

    例:

    SELECT 
      name,
      provider,
      data_source
    FROM sys.servers;
    

    結果:

    +--------------+------------+-----------------+
    | name         | provider   | data_source     |
    |--------------+------------+-----------------|
    | c1b060f68fcb | SQLNCLI    | c1b060f68fcb    |
    | Homer        | SQLNCLI    | 172.17.0.2,1433 |
    +--------------+------------+-----------------+
    

    また、ローカルサーバーを返さない場合は、WHERE is_linked = 1を追加できます。 クエリへ:

    SELECT 
      name,
      provider,
      data_source
    FROM sys.servers
    WHERE is_linked = 1;
    

    結果:

    +--------+------------+-----------------+
    | name   | provider   | data_source     |
    |--------+------------+-----------------|
    | Homer  | SQLNCLI    | 172.17.0.2,1433 |
    +--------+------------+-----------------+
    
    >
    1. すべてのストアドプロシージャを一覧表示するクエリ

    2. プリペアドステートメントでワイルドカードのように使用する

    3. MySQL InnoDB Cluster 8.0-完全なデプロイメントウォークスルー:パート1

    4. 時間と分を出力するDateDiff