sql >> Databasteknik >  >> RDS >> Sqlserver

2 sätt att returnera en lista över länkade servrar i SQL Server med T-SQL

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

  1. Skickar SentryOne-data till Azure SQL Database DTU Calculator

  2. SQL delad kommaseparerad rad

  3. Hur man aktiverar allmänna loggar och felloggar i AWS RDS

  4. I PHP med PDO, hur kontrollerar man den slutliga SQL-parametriserade frågan?