SQLShack (Polski)

serwery połączone umożliwiają przesyłanie instrukcji T-SQL na instancji SQL Server, która zwraca dane z innych instancji SQL Server. Serwer połączony umożliwia łączenie danych z kilku instancji SQL Server za pomocą pojedynczej instrukcji T-SQL, gdy dane istnieją w wielu bazach danych na różnych instancjach SQL. Używając połączonego serwera do pobierania danych z kilku instancji SQL, jedyną rzeczą, którą należy zrobić, to połączyć się z jedną instancją SQL.,

istnieją dwa sposoby konfigurowania linked server w SSMS. Jednym ze sposobów jest użycie procedury składowanej systemu sp_addlinkedserver, a innym jest użycie interfejsu GUI SQL Server Management Studio (SSMS).

w tym artykule wyjaśnimy, jak skonfigurować serwer połączony za pomocą źródła danych serwera SQL. Więcej informacji na temat innych źródeł danych można znaleźć pod tym linkiem.,

aby zobaczyć wszystkie utworzone połączone serwery w SSMS, w Eksploratorze obiektów wybierz folder Obiekty serwera i rozwiń folder połączone Serwery:

aby utworzyć połączony serwer w SSMS, kliknij prawym przyciskiem myszy folder połączone Serwery i z menu kontekstowego wybierz opcję Nowy połączony Serwer:

pojawia się nowe okno dialogowe serwera połączonego:

w tym oknie dialogowym należy określić nazwę połączonego serwera i typ serwera., Połączone serwery mogą być zdefiniowane dla innego rodzaju źródła danych, jeśli wybrano przycisk radiowy inne źródło danych. Na potrzeby tego artykułu zostanie wybrany przycisk radiowy SQL Server w sekcji Typ serwera, a w polu tekstowym Linked server zostanie wprowadzona nazwa serwera:

Jeśli typ serwera SQL jest wybrany do konfiguracji serwera SQL Server linked server, nazwa podana w polu tekstowym Linked server musi być nazwą zdalnego serwera SQL.,

Jeśli instancja SQL Server jest domyślną instancją, wpisz nazwę komputera, na którym znajduje się instancja SQL Server (np. WSERVER2012). Jeśli serwer SQL jest instancją nazwaną, wpisz nazwę komputera i nazwę instancji oddzielone ukośnikiem(np. WSERVER2012\SQLEXPRESS).,

w przeciwnym razie może wystąpić następujący błąd po naciśnięciu przycisku OK:

aby ustawić sposób uwierzytelniania użytkownika do instancji WSERVER2012\SQLEXPRESS, w sekcji Wybierz stronę w lewym górnym rogu okna dialogowego nowego połączonego serwera wybierz pozycję Zabezpieczenia:

tutaj można ustawić różne sposoby uwierzytelniania połączonego serwera.

pod mapowaniem logowania serwera lokalnego do logowania serwera zdalnego można ustawić dwa sposoby logowania lokalnego do logowania zdalnego., Jednym ze sposobów jest powiązanie lokalnego logowania ze zdalnym logowaniem, a innym sposobem jest podszywanie się.

login lokalny

w polu Login lokalny zostaną wyświetlone wszystkie loginy lokalne. Login lokalny może być loginem lokalnym uwierzytelniania serwera SQL:

lub loginem uwierzytelniania systemu Windows:

teraz, po kliknięciu przycisku OK w oknie dialogowym nowego połączonego serwera, pojawi się następujący komunikat o błędzie:

mapowanie logowania powinno być albo podszywane, albo mieć zdalną nazwę logowania.,

Patrz obrazek poniżej:

dzieje się tak, ponieważ pole wyboru Podszywanie się nie jest zaznaczone.

podszywaj się

pole wyboru podszywaj się, gdy jest zaznaczone, przekazuje lokalne Dane logowania do połączonego serwera., Dla uwierzytelniania SQL Server, ten sam login z dokładnymi poświadczeniami musi istnieć na połączonym serwerze, w przeciwnym razie po połączeniu z serwerem za pomocą uwierzytelniania SQL Server lista baz danych w folderze katalogi może wyglądać następująco:

dla logowań Windows login musi być prawidłowym loginem na połączonym serwerze. Aby użyć podszywania się, należy ustawić delegację między serwerem lokalnym a serwerem połączonym.

stwórzmy serwer połączony za pomocą lokalnego loginu Windows., W polu combo logowania lokalnego wybierz lokalny login Windows i zaznacz pole wyboru podszywaj się i naciśnij przycisk OK:

w folderze katalogi zostaną wymienione wszystkie bazy danych znajdujące się na połączonym serwerze:

zdalny użytkownik

opcja remote user pozwala użytkownikom z lokalnego serwera SQL łączyć się z linked SQL Server, nawet jeśli ich poświadczenia nie są obecne na serwerze zdalnym, używając poświadczeń od użytkownika, który istnieje na serwerze zdalnym., Zasadniczo pozwala lokalnym loginom połączyć się ze zdalnym serwerem jako inny login, który musi istnieć na zdalnym serwerze.

hasło Zdalnego Użytkownika

określ hasło zdalnego użytkownika.

z listy rozwijanej Login Lokalny Wybierz login lokalny, który powinien zostać przypisany do loginu zdalnego. W polu użytkownik zdalny wprowadź nazwę użytkownika zdalnego, który istnieje na serwerze zdalnym, a w polu Hasło zdalne wprowadź hasło tego użytkownika zdalnego.,e7″>

dodatkowo w oknie dialogowym Linked Server można określić, w jaki sposób loginy, które nie są ustawione na liście mapowań logowania serwera lokalnego na serwer zdalny, będą się łączyć z połączonym serwerem, w tym celu można użyć czterech opcji, które znajdują się w sekcji dla logowania nie zdefiniowanego na powyższej liście, połączenia będą:

nie być wykonane / h2>

Jeśli ten przycisk radiowy jest wybrany, żaden użytkownik, który nie został zidentyfikowany na liście mapowań logowania serwera lokalnego do serwera zdalnego, nie może nawiązać połączenia z połączonym serwerem.,

na przykład, jeśli zalogujesz się za pomocą innego konta (np. Ben), które nie jest ustawione na liście mapowania logowania, lista baz danych w folderze katalogi będzie wyglądać następująco:

Jeśli spróbujesz wykonać połączone zapytanie serwera:

div

1
2
3
select * from .AdventureWorks2014.Zasoby ludzkie.,Pracownik e

pojawi się następujący wynik:

Msg 7416, poziom 16, Stan 1, linia 1
dostęp do zdalnego serwera jest zablokowany, ponieważ nie istnieje mapowanie logowania.

Be made without using a security context

opcja be made without using a security context jest używana do łączenia się ze źródłami danych, które nie wymagają uwierzytelniania, na przykład jak plik tekstowy., Gdy ta opcja jest zaznaczona dla połącz z połączonym serwerem, będzie miała taki sam efekt jak wybranie opcji „nie być wykonane”.

Jeśli spróbujesz wykonać połączone zapytanie serwera:

1
2
3

select * from .AdventureWorks2014.Zasoby ludzkie.,Employee e

The following message e may appear:

OLE DB provider „SQLNCLI11” for linked server „WSERVER2012\SQLEXPRESS” returned message „Invalid authorization specification”.
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider „SQLNCLI11” for linked server „WSERVER2012\SQLEXPRESS” reported an error. Authentication failed.,
Msg 7303, poziom 16, Stan 1, linia 1

nie może zainicjować obiektu źródła danych OLE DB provider „SQLNCLI11” dla połączonego serwera „WSERVER2012\SQLEXPRESS”.

być wykonane przy użyciu bieżącego kontekstu bezpieczeństwa logowania

Jeśli ta opcja jest wybrana, przekaże bieżący kontekst bezpieczeństwa logowania lokalnego do logowania zdalnego. Jeśli używane jest uwierzytelnianie systemu Windows, poświadczenia systemu windows będą używane do połączenia ze zdalnym serwerem SQL. Jeśli używane jest uwierzytelnianie SQL Server, wtedy lokalne Dane logowania zostaną przekazane do zdalnego serwera SQL., Uwaga, aby pomyślnie nawiązać połączenie ze zdalnym serwerem, użytkownik z dokładnie tymi samymi poświadczeniami musi istnieć na zdalnym serwerze, w przeciwnym razie podczas wykonywania zapytania połączonego serwera:

1
2
3

select * from .AdventureWorks2014.Zasoby ludzkie.,Pracownik e

pojawi się następujący komunikat:

Msg 18456, Poziom 14, Stan 1, linia 1
Login failed for user 'Ben'.

Be made using this security context

czwarta opcja w sekcji for a login not defined in the list above, connections will be made using this security context., W polach logowanie zdalne i hasło wprowadź poświadczenia logowania uwierzytelniania serwera SQL, które istnieją na serwerze zdalnym, w przeciwnym razie może wystąpić następujący błąd:

ostatnią pozycją w menu wybierz stronę jest pozycja Opcje serwera. Po wybraniu tej opcji zostanie wyświetlone następujące okno:

tutaj można zobaczyć lub ustawić dodatkowe opcje dla połączonego serwera.

kompatybilny z kolacją

pierwszą opcją jest opcja kompatybilna z kolacją., Ta opcja jest używana do określenia, czy połączony serwer ma taką samą konfigurację jak serwer lokalny. Opcja ta powinna być ustawiona na True tylko wtedy, gdy wiadomo, że połączony serwer ma taką samą konfigurację jak lokalny, w przeciwnym razie powinna być ustawiona na False (domyślnie).

dostęp do danych

Ta opcja jest używana do zezwalania / odmawiania dostępu do danych połączonych serwerów. Jeśli ta opcja jest ustawiona na False, dostęp do zdalnego dostępu zostanie zablokowany. Ta opcja jest przydatna do tymczasowego wyłączenia dostępu do zdalnego serwera., Następujący komunikat pojawi się podczas wykonywania zapytania połączonego serwera i ta opcja jest ustawiona na False:

Msg 7411, Level 16, State 1, Line 1
Serwer 'WSERVER2012\SQLEXPRESS' nie jest skonfigurowany do dostępu do danych.

domyślnie opcja jest ustawiona na True

RPC i RCP Out

Ta funkcja RCP (Remote Procedure Call) jest używana do umożliwienia dostępu do zdalnych procedur, które mają być wywołane z połączonego serwera lub do połączonego serwera.,

Jeśli te opcje są ustawione na False, podczas wywoływania niektórych procedur z połączonego serwera pojawi się następujący błąd:

Msg 7411, Level 16, State 1, Line 4
Serwer 'WSERVER2012\SQLEXPRESS' nie jest skonfigurowany dla RPC.,

domyślnie wartość False jest ustawiana dla opcji RPC i RCP Out

użyj zdalnej kolacji

gdy ta opcja jest ustawiona na True, zostanie użyta kolekcja zdalnych kolumn i kolekcja określona w polu Nazwa kolacji zostanie użyta dla źródła danych, które nie są źródłem danych SQL Server, ale jeśli opcja jest ustawiona na False, zostanie użyta kolacja dla serwera lokalnego. Domyślnie jest ustawiona na False.,

Nazwa zestawiania

Jeśli pole Use Remote Collation filed ma wartość True, opcja ta jest używana do określenia nazwy zestawiania połączonego serwera dla źródła danych, które nie jest źródłem danych SQL Server. Po wybraniu nazwy kolacji musi to być kolacja, którą obsługuje SQL Server.

limit czasu połączenia

Ta opcja jest używana do Ustawienia maksymalnego czasu, na jaki serwer lokalny powinien czekać, aby uzyskać połączenie z instancją linked server SQL Server. Jeżeli jest ustawione 0( zero), wtedy zostanie zastosowana opcja serwera zdalny czas logowania. Domyślnie dla tej opcji ustawione jest 10 sekund., Uwaga, domyślną wartością dla SQL Server 2008 jest 20 sekund.

Query Timeout

Ta opcja jest używana do ustawiania, jak długo, w sekundach, zdalny proces może trwać, zanim upłynie czas. Wartość domyślna to 600 sekund (10 minut). Aby wyłączyć query timeout wpisz 0 (zero) w to pole i zapytanie będzie czekać aż zostanie zakończone.

Dystrybutor

w tej opcji można określić, czy połączony serwer uczestniczy w replikacji jako wydawca dystrybucji.,

Dystrybutor jest instancją bazy danych, która działa jako magazyn replikacji konkretnych danych powiązanych z jednym lub więcej wydawców

Wydawca

w tej opcji można ustawić, czy połączony serwer ma być wydawcą replikacji, czy nie. Jeśli to prawda, połączony serwer jest wydawcą. W przeciwnym razie nie jest.

Wydawca jest instancją bazy danych, która udostępnia dane innym lokalizacjom poprzez replikację.

Abonent

w tej opcji można określić, czy połączony serwer jest abonentem replikacji, czy nie.,

subskrybent jest instancją bazy danych, która otrzymuje replikowane dane.

Więcej informacji na temat dystrybutora, wydawcy, Subskrybenta można znaleźć na stronie Przegląd modelu publikacji replikacji.

leniwa Walidacja schematu

Ta opcja sprawdza zmiany schematu, które wystąpiły od czasu kompilacji w tabelach zdalnych. Jeśli ta opcja jest ustawiona na False( stan domyślny), SQL Server sprawdza zmiany przed wykonaniem zapytania, a jeśli są pewne zmiany, rekompiluje zapytanie., Jeśli Walidacja schematu leniwego jest ustawiona na True, schemat opóźnienia serwera SQL sprawdza zdalne tabele do czasu wykonania zapytania.

Włącz promocję transakcji rozproszonych

Ta opcja jest używana do ochrony działań procedury serwer-serwer poprzez transakcję Microsoft Distributed Transaction Coordinator (MS DTC). Jeśli ta opcja jest ustawiona na True wywołanie Zdalnej procedury składowanej uruchamia transakcję rozproszoną i pobiera transakcję z MS DTC.

teraz, gdy wszystko jest ustawione, kliknij przycisk OK w oknie dialogowym Nowy połączony Serwer., Nowo utworzony serwer połączony pojawi się w folderze serwer połączony.,rks poprawnie, kliknij prawym przyciskiem myszy na tym połączonym serwerze i wybierz Test Connection:

Jeśli połączenie z połączonym serwerem zostanie nawiązane pomyślnie, pojawi się następujące okno informacji:

w przeciwnym razie pojawi się komunikat o błędzie, który pokazuje problem uniemożliwiający połączenie pomyślnie utworzone:

odpytywanie danych za pomocą połączonego serwera

odpytywanie danych za pomocą połączonego serwera jest nieco inne niż odpytywanie danych z lokalnego serwera SQL., W zwykłych zapytaniach zwykle stosuje się notację dwuczęściową ., na przykład Zasoby ludzkie.Pracownik:

1
2
3

wybierz * z zasobów ludzkich.Pracownik e

podczas odpytywania tabeli z połączonego serwera używana jest czwarta notacja części LinkedServer.Baza danych.Schemat.Nazwa obiektu., Aby pobrać dane z tabeli pracowników, która znajduje się w bazie danych na połączonym serwerze, kod zapytania będzie wyglądał następująco:

1
2
3

select * from …,

usuwanie połączonego serwera

aby usunąć połączony serwer, w folderze połączone Serwery kliknij prawym przyciskiem myszy na połączonym serwerze i z menu kontekstowego wybierz polecenie Usuń:

otworzy się okno dialogowe usuń obiekt:

kliknij przycisk OK i z pola wiadomości wybierz przycisk Tak:

Jeśli wszystko pójdzie dobrze, to serwer połączony zostanie usunięty z folderu serwery połączone., Server linked server using Transact-SQL

  • how to query Excel data using SQL Server linked servers
  • How To configure a Linked Server using the ODBC driver
  • How to create a linked server to an Azure SQL database
    • Author
    • Recent Posts

    , Ma duże doświadczenie w zakresie zapewniania jakości, eskalacji/rozwiązywania problemów i ewangelizacji produktów.
    jest płodnym autorem autorytatywnych treści związanych z SQL Server, w tym wielu „platynowych” artykułów (top 1% pod względem popularności i zaangażowania). Jego pisanie obejmuje szereg tematów na MySQL i SQL Server, w tym zdalne / połączone serwery, import/eksport, LocalDB, SSMS i więcej.
    w niepełnym wymiarze czasu Zivko lubi koszykówkę ,piłkarzyki i muzykę rockową.,
    Zobacz wszystkie posty Marko Zivkovic

    najnowsze posty Marko Zivkovic (Zobacz wszystkie)
    • Jak połączyć się ze zdalnym serwerem MySQL przy użyciu SSL na Ubuntu – 28 kwietnia 2020
    • Jak zainstalować MySQL na Ubuntu – 10 marca 2020
    • używanie kluczy SSH do łączenia się ze zdalnym serwerem MySQL – 28 listopada 2019

    Share

    Dodaj komentarz

    Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *