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 | +--------+------------+-----------------+>