Om du märker att du behöver använda Transact-SQL för att få en lista över alla länkade servrar i SQL Server, nedan är två sätt att göra detta.
I det första exemplet använder jag sp_linkedservers
systemlagrad procedur för att returnera de länkade servrarna. I det andra exemplet använder jag sys.servers
systemkatalogvy.
Exempel 1 – sp_linkedservers
Lagrad procedur
sp_linkedservers
den systemlagrade proceduren är utformad specifikt för att returnera en lista över länkade servrar definierade i den lokala servern.
För att utföra det, gör så här:
EXEC sp_linkedservers;
Resultat:
+--------------+--------------------+---------------+------------------+----------------------+----------------+-----------+ | 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 | +--------------+--------------------+---------------+------------------+----------------------+----------------+-----------+
I det här fallet får jag två rader. Den första raden är faktiskt min lokala server. Den lokala servern har en länkad server som heter "Homer", och som visas på andra raden.
Exempel 2 – sys.servers
Systemvy
sys.servers
systemkatalogvyn innehåller en rad per länkad eller registrerad fjärrserver och en rad för den lokala servern som har ett
server_id
av 0
.
Den här vyn returnerar en hel del kolumner, så jag använder vertikal utdata för att visa resultaten i det här exemplet.
Exempel:
SELECT * FROM sys.servers;
Resultat (med vertikal utdata):
-[ 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
Du får mycket mer information med utsikten.
Naturligtvis kan du också ange endast de kolumner som du är intresserad av.
Till exempel:
SELECT name, provider, data_source FROM sys.servers;
Resultat:
+--------------+------------+-----------------+ | name | provider | data_source | |--------------+------------+-----------------| | c1b060f68fcb | SQLNCLI | c1b060f68fcb | | Homer | SQLNCLI | 172.17.0.2,1433 | +--------------+------------+-----------------+
Och om du inte vill att den lokala servern ska returneras kan du lägga till WHERE is_linked = 1
till din fråga:
SELECT name, provider, data_source FROM sys.servers WHERE is_linked = 1;
Resultat:
+--------+------------+-----------------+ | name | provider | data_source | |--------+------------+-----------------| | Homer | SQLNCLI | 172.17.0.2,1433 | +--------+------------+-----------------+