Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

2 sposoby na zwrócenie listy połączonych serwerów w SQL Server przy użyciu T-SQL

Jeśli okaże się, że musisz użyć Transact-SQL, aby uzyskać listę wszystkich połączonych serwerów w SQL Server, poniżej znajdują się dwa sposoby, w jakie możesz to zrobić.

W pierwszym przykładzie używam sp_linkedservers systemowa procedura składowana w celu zwrócenia połączonych serwerów. W drugim przykładzie używam sys.servers widok katalogu systemowego.

Przykład 1 – sp_linkedservers Zapisana procedura

sp_linkedservers systemowa procedura składowana jest zaprojektowana specjalnie do zwracania listy połączonych serwerów zdefiniowanych na serwerze lokalnym.

Aby go wykonać, wykonaj następujące czynności:

EXEC sp_linkedservers;

Wynik:

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

W tym przypadku otrzymuję dwa rzędy. Właściwie pierwszy wiersz to mój serwer lokalny. Serwer lokalny ma połączony serwer o nazwie „Homer”, który jest wyświetlany w drugim wierszu.

Przykład 2 – sys.servers Widok systemu

sys.servers widok katalogu systemowego zawiera wiersz dla każdego zarejestrowanego serwera połączonego lub zdalnego oraz wiersz dla serwera lokalnego, który ma server_id z 0 .

Ten widok zwraca sporo kolumn, więc użyję danych wyjściowych pionowych do wyświetlenia wyników w tym przykładzie.

Przykład:

SELECT * 
FROM sys.servers;

Wynik (przy użyciu wyjścia pionowego):

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

Dzięki temu widokowi uzyskasz o wiele więcej informacji.

Oczywiście możesz również określić tylko te kolumny, które Cię interesują.

Na przykład:

SELECT 
  name,
  provider,
  data_source
FROM sys.servers;

Wynik:

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

A jeśli nie chcesz, aby zwracany był serwer lokalny, możesz dodać WHERE is_linked = 1 do zapytania:

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

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak ustawić swoje dane poziomo

  2. Jak zainstalować SSMS

  3. Konwersja wyników Select do skryptu wstawiania — SQL Server

  4. Metody stronicowania SQL Server 2008?

  5. Podziel jedną kolumnę na wiele wierszy