Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Managed Instance
W tym artykule pokazano, jak utworzyć połączony serwer i uzyskać dostęp do danych z innego programu SQL Server, wystąpienia zarządzanego usługi Azure SQL lub innego źródła danych przy użyciu programu SQL Server Management Studio (SSMS) lub języka Transact-SQL. Serwery połączone umożliwiają aparatowi bazy danych programu SQL Server i usłudze Azure SQL Managed Instance odczytywanie danych ze zdalnych źródeł danych i wykonywanie poleceń względem zdalnych serwerów baz danych (na przykład źródeł danych OLE DB) poza wystąpieniem programu SQL Server.
Kontekst
Serwery połączone są zwykle skonfigurowane tak, aby umożliwić aparatowi bazy danych wykonywanie instrukcji Transact-SQL, która zawiera tabele w innym wystąpieniu programu SQL Server lub innym produkcie bazy danych, takim jak Oracle. Wiele typów źródeł danych można skonfigurować jako serwery połączone, w tym dostawców baz danych innych firm i usługi Azure Cosmos DB.
Po utworzeniu serwera połączonego zapytania rozproszone mogą być uruchamiane na tym serwerze, a zapytania mogą łączyć tabele z więcej niż jednego źródła danych. Jeśli połączony serwer jest zdefiniowany jako wystąpienie programu SQL Server lub usługi Azure SQL Managed Instance, można wykonać zdalne procedury składowane.
Możliwości i wymagane argumenty połączonego serwera mogą się znacznie różnić. Przykłady w tym artykule zawierają typowy przykład, ale nie opisano wszystkich opcji. Aby uzyskać więcej informacji, zobacz sp_addlinkedserver.
Uprawnienia
W przypadku korzystania z instrukcji Transact-SQL wymagane jest ALTER ANY LINKED SERVER uprawnienie na serwerze lub członkostwo w stałej roli serwera setupadmin. Korzystanie z programu Management Studio wymaga CONTROL SERVER uprawnień lub członkostwa w stałej roli serwera sysadmin.
Tworzenie połączonego serwera za pomocą programu SSMS
Utwórz serwer połączony z programem SSMS przy użyciu następującej procedury:
Otwieranie okna dialogowego Nowy połączony serwer
W programie SQL Server Management Studio (SSMS):
- Otwórz Eksploratora obiektów.
- Rozwiń węzeł Obiekty serwera.
- Kliknij prawym przyciskiem myszy pozycję Połączone serwery.
- Wybierz pozycję Nowy połączony serwer.
Edytowanie strony Ogólne dla właściwości serwera połączonego
Na stronie Ogólne w polu Serwer połączony wpisz nazwę wystąpienia programu SQL Server , z którym łączysz się.
Uwaga / Notatka
Jeśli wystąpienie programu SQL Server jest wystąpieniem domyślnym, wprowadź nazwę komputera, który hostuje wystąpienie programu SQL Server. Jeśli program SQL Server jest nazwanym wystąpieniem, wprowadź nazwę komputera i nazwę wystąpienia, na przykład Accounting\SQLExpress.
W razie potrzeby określ typ serwera i powiązane informacje:
SQL Server
Zidentyfikuj połączony serwer jako wystąpienie programu Microsoft SQL Server lub wystąpienie zarządzane usługi Azure SQL. Jeśli używasz tej metody definiowania serwera połączonego, nazwa określona na serwerze połączonym musi być nazwą sieciową serwera. Ponadto wszystkie tabele pobrane z serwera pochodzą z domyślnej bazy danych zdefiniowanej na potrzeby logowania na serwerze połączonym.
Inne źródło danych
Określ typ serwera OLE DB inny niż SQL Server. Wybierz tę opcję, aby aktywować opcje.
Dostawca
Wybierz źródło danych OLE DB z pola listy. Dostawca OLE DB jest zarejestrowany przy użyciu danego identyfikatora PROGID w rejestrze.
Nazwa produktu
Wpisz nazwę produktu źródła danych OLE DB, aby dodać je jako serwer połączony.
Źródło danych
Wpisz nazwę źródła danych interpretowaną przez dostawcę OLE DB. Jeśli nawiązujesz połączenie z wystąpieniem programu SQL Server, podaj nazwę wystąpienia.
Ciąg dostawcy
Wpisz unikatowy identyfikator programowy (PROGID) dostawcy OLE DB, który odpowiada źródle danych. Aby zapoznać się z przykładami prawidłowych ciągów dostawcy, zobacz sp_addlinkedserver.
Lokalizacja
Wpisz lokalizację bazy danych interpretowaną przez dostawcę OLE DB.
Katalog
Wpisz nazwę wykazu, który ma być używany podczas nawiązywania połączenia z dostawcą OLE DB.
Edytowanie strony Zabezpieczenia dla właściwości serwera połączonego
Na stronie Zabezpieczenia określ kontekst zabezpieczeń, który jest używany, gdy oryginalne wystąpienie łączy się z serwerem połączonym. Istnieją dwie strategie, które można skonfigurować w tym miejscu, które mogą być używane samodzielnie lub połączone. Pierwszym z nich jest mapowanie nazw logowania z serwera lokalnego na serwer zdalny, a drugi to sposób, w jaki połączony serwer powinien traktować nazwy logowania, które nie są mapowane.
Dodawanie mapowań logowania
Opcjonalnie możesz określić sposób uwierzytelniania określonych logowań serwera lokalnego przy użyciu serwera połączonego.
W obszarze Logowanie serwera lokalnego do mapowań logowania serwera zdalnego powtórz następujący proces dla każdego logowania, który chcesz mapować:
Wybierz Dodaj.
Określ nazwę logowania lokalnego.
Określ identyfikator logowania lokalnego, który może łączyć się z serwerem połączonym. Logowanie lokalne może być logowaniem przy użyciu uwierzytelniania programu SQL Server lub logowania uwierzytelniania systemu Windows. Korzystanie z grupy systemu Windows lub użytkownika zawartej bazy danych nie jest obsługiwane. Użyj tej listy, aby ograniczyć połączenie z określonymi identyfikatorami logowania lub zezwolić niektórym identyfikatorom logowania na nawiązywanie połączenia jako innego identyfikatora logowania.
Uwaga / Notatka
Typowe problemy z serwerami połączonymi przy użyciu uwierzytelniania systemu Windows do zdalnego wystąpienia programu SQL Server wynikają z problemów z nazwami główną usługi (SPN). Aby uzyskać więcej informacji, zobacz Obsługa głównej nazwy usługi (SPN) w połączeniach klientów. Microsoft Kerberos Configuration Manager for SQL Server to narzędzie diagnostyczne ułatwiające rozwiązywanie problemów z łącznością protokołu Kerberos z programem SQL Server. Aby uzyskać więcej informacji, zobacz Microsoft Kerberos Configuration Manager for SQL Server.
Wybierz pozycję Personifikuj (opcjonalnie).
Przekaż nazwę użytkownika i hasło z lokalnego logowania do serwera połączonego. W przypadku uwierzytelniania programu SQL Server na serwerze zdalnym musi istnieć nazwa logowania o dokładnie takiej samej nazwie i haśle. W przypadku logowań systemu Windows identyfikator logowania musi być prawidłowym identyfikatorem logowania na serwerze połączonym.
Aby móc używać personifikacji, konfiguracja musi spełniać wymagania dotyczące delegowania.
Określ użytkownika zdalnego , jeśli nie używasz personifikacji.
Użyj użytkownika zdalnego, aby zamapować użytkownika zdefiniowanego w polu Logowanie lokalne. Użytkownik zdalny musi być identyfikatorem logowania uwierzytelniania programu SQL Server na serwerze zdalnym.
Określ hasło zdalne , jeśli nie używasz personifikacji.
Określ hasło użytkownika zdalnego.
Wybierz pozycję Usuń , aby usunąć istniejące dane logowania lokalnego, jeśli jest to konieczne.
Określ domyślny kontekst zabezpieczeń dla identyfikatorów logowania, których nie ma na liście mapowań
W środowisku domeny, w którym użytkownicy nawiązują połączenie przy użyciu identyfikatorów logowania do domeny, wybranie pozycji Być wykonane przy użyciu bieżącego kontekstu zabezpieczeń logowania jest często najlepszym wyborem. Gdy użytkownicy łączą się z oryginalnym programem SQL Server przy użyciu logowania programu SQL Server , najlepszym wyborem jest często wybranie opcji Przy użyciu tego kontekstu zabezpieczeń, a następnie podanie niezbędnych poświadczeń do uwierzytelnienia na serwerze połączonym.
Wybierz jedną z następujących opcji:
Nie można wykonać
Połączenie nie zostanie nawiązane dla identyfikatorów logowania, które nie zostanie zdefiniowane na liście.
Nie należy używać kontekstu zabezpieczeń
Połączenie nawiązywane jest bez używania kontekstu zabezpieczeń dla loginów, które nie zostały zdefiniowane na liście.
Należy wykonać przy użyciu bieżącego kontekstu zabezpieczeń logowania
Połączenie jest nawiązywane przy użyciu bieżącego kontekstu zabezpieczeń dla danych logowania, które nie są zdefiniowane na liście. W przypadku połączenia z serwerem lokalnym przy użyciu uwierzytelniania systemu Windows poświadczenia systemu Windows są używane do nawiązywania połączenia z serwerem zdalnym. Jeśli nawiązujesz połączenie z serwerem lokalnym używając uwierzytelniania SQL Server, Twoja nazwa logowania i hasło są używane do połączenia z serwerem zdalnym. W takim przypadku na serwerze zdalnym musi istnieć nazwa logowania o dokładnie takiej samej nazwie i haśle.
Należy używać tego kontekstu zabezpieczeń
Połączenie jest nawiązywane przy użyciu nazwy logowania i hasła określonych w polach Logowanie zdalne i Hasło dla logowań nie zdefiniowanych na liście. Zdalne logowanie musi być identyfikatorem logowania uwierzytelniania programu SQL Server na serwerze zdalnym.
Ostrzeżenie
Jeśli połączony serwer jest skonfigurowany z opcją Być wykonane przy użyciu tego kontekstu zabezpieczeń, każdy użytkownik w wystąpieniu może uzyskać dostęp do zdalnego serwera połączonego przy użyciu tego kontekstu. Może to mieć niezamierzony potencjał nadużyć lub złośliwego dostępu wewnętrznego. Uwierzytelnione zdalne logowanie SQL podane na połączonym serwerze powinno mieć minimalne niezbędne uprawnienia na serwerze zdalnym, aby zapewnić zasadę najniższych uprawnień i zmniejszyć obszar ataków.
Edytowanie strony Opcje serwera we właściwościach serwera połączonego (opcjonalnie)
Aby wyświetlić lub określić opcje serwera, wybierz stronę Opcje serwera . Możesz edytować dowolną z następujących opcji:
Sortowanie zgodne
Wpływa na wykonywanie zapytań rozproszonych na serwerach połączonych. Jeśli ta opcja ma wartość true, program SQL Server zakłada, że wszystkie znaki na serwerze połączonym są zgodne z serwerem lokalnym, w odniesieniu do zestawu znaków i sekwencji sortowania (lub kolejności sortowania). Dzięki temu program SQL Server może wysyłać porównania w kolumnach znaków do dostawcy. Jeśli ta opcja nie jest ustawiona, program SQL Server zawsze ocenia porównania w kolumnach znaków lokalnie.
Tę opcję należy ustawić tylko wtedy, gdy jest pewne, że źródło danych odpowiadające serwerowi połączonemu ma ten sam zestaw znaków i kolejność sortowania co serwer lokalny.
Dostęp do danych
Włącza i wyłącza połączony serwer na potrzeby dostępu do zapytań rozproszonych.
RPC
Włącza zdalne wywołania procedur (RPC) z określonego serwera.
Wyjście RPC
Włącza RPC do określonego serwera.
Korzystanie z sortowania zdalnego
Określa, czy jest używane sortowanie kolumny zdalnej, czy serwera lokalnego.
Jeśli to prawda, sortowanie kolumn zdalnych jest używane dla źródeł danych programu SQL Server, a sortowanie określone w nazwie sortowania jest używane dla źródeł danych innych niż SQL Server.
Jeśli wartość jest fałszywa, zapytania rozproszone zawsze używają domyślnego sortowania serwera lokalnego, natomiast nazwa sortowania oraz sortowanie kolumn zdalnych są ignorowane. Wartość domyślna to false.
Nazwa sortowania
Określa nazwę sortowania używanego przez zdalne źródło danych, jeśli użyj zdalnego sortowania ma wartość true, a źródło danych nie jest źródłem danych programu SQL Server. Nazwa musi być jednym z sortowania obsługiwanych przez program SQL Server.
Użyj tej opcji podczas uzyskiwania dostępu do źródła danych OLE DB innego niż PROGRAM SQL Server, ale którego sortowanie jest zgodne z jednym z sortowania programu SQL Server.
Serwer połączony musi obsługiwać pojedyncze sortowanie, które ma być używane dla wszystkich kolumn na tym serwerze. Nie należy ustawiać tej opcji, jeśli połączony serwer obsługuje wiele sortowania w jednym źródle danych lub jeśli sortowanie serwera połączonego nie może być określone w celu dopasowania do jednego z sortowania programu SQL Server.
Przekroczenie limitu czasu połączenia
Wartość limitu czasu w sekundach na potrzeby nawiązywania połączenia z połączonym serwerem.
Jeśli
0, użyj domyślnej wartości opcji limitusp_configureczasu logowania zdalnego .Limit czasu zapytania
Wartość limitu czasu w sekundach dla zapytań względem serwera połączonego.
Jeśli
0, użyj domyślnejsp_configurewartości opcji limitu czasu zapytania zdalnego .Włączanie podwyższania poziomu transakcji rozproszonych
Użyj tej opcji, aby chronić akcje procedury serwer-serwer za pośrednictwem transakcji koordynatora transakcji rozproszonej firmy Microsoft (MS DTC). Jeśli ta opcja ma wartość TRUE, wywołanie zdalnej procedury składowanej uruchamia transakcję rozproszoną i powoduje zarejestrowanie transakcji z usługą MS DTC. Aby uzyskać więcej informacji, zobacz sp_serveroption.
Zapisywanie serwera połączonego
Kliknij przycisk OK.
Wyświetlanie lub edytowanie opcji połączonego dostawcy serwera w programie SSMS
Wszyscy dostawcy nie mają tych samych opcji. Na przykład niektóre typy danych mają dostępne indeksy, a niektóre mogą nie. Użyj tego okna dialogowego, aby ułatwić programowi SQL Server zrozumienie możliwości dostawcy. Program SQL Server instaluje niektórych typowych dostawców danych, jednak gdy produkt udostępnia zmiany danych, dostawca zainstalowany przez program SQL Server może nie obsługiwać wszystkich najnowszych funkcji. Najlepszym źródłem informacji o możliwościach produktu dostarczającego dane jest dokumentacja tego produktu.
Aby otworzyć stronę Opcje połączonych dostawców serwera w programie SSMS:
- Otwórz Eksploratora obiektów.
- Rozwiń węzeł Obiekty serwera.
- Rozwiń węzeł Połączone serwery.
- Rozwiń węzeł Dostawcy.
- Kliknij prawym przyciskiem myszy dostawcę i wybierz polecenie Właściwości.
Opcje dostawcy są definiowane w następujący sposób:
Parametr dynamiczny
Wskazuje, że dostawca zezwala na
?składnię znacznika parametrów dla sparametryzowanych zapytań. Ustaw tę opcję tylko wtedy, gdy dostawca obsługuje interfejs ICommandWithParameters i obsługuje?jako znacznik parametru. Ustawienie tej opcji umożliwia programowi SQL Server wykonywanie sparametryzowanych zapytań względem dostawcy. Możliwość wykonywania sparametryzowanych zapytań względem dostawcy może spowodować lepszą wydajność niektórych zapytań.Zagnieżdżone zapytania
Wskazuje, że dostawca zezwala na zagnieżdżone
SELECTinstrukcje w klauzuliFROM. Ustawienie tej opcji umożliwia programowi SQL Server delegowanie niektórych zapytań do dostawcy, który wymaga zagnieżdżaniaSELECTinstrukcji w klauzuliFROM.Poziom zero tylko
Tylko interfejsy OLE DB na poziomie 0 są wywoływane względem dostawcy.
Zezwalaj na przetwarzanie
Program SQL Server umożliwia utworzenie wystąpienia dostawcy jako serwera przetwarzania. Jeśli ta opcja nie jest ustawiona, domyślne zachowanie polega na utworzeniu wystąpienia dostawcy poza procesem programu SQL Server. Utworzenie wystąpienia dostawcy poza procesem programu SQL Server chroni proces programu SQL Server przed błędami u dostawcy. Jeśli dostawca zostanie utworzone poza procesem programu SQL Server, aktualizacje lub wstawki odwołujące się do długich kolumn (tekst, ntekst lub obraz) nie są dozwolone.
Aktualizacje nieobsługiwane
Program SQL Server zezwala na aktualizacje, nawet jeśli usługa ITransactionLocal nie jest dostępna. Jeśli ta opcja jest włączona, aktualizacje względem dostawcy nie są możliwe do odzyskania, ponieważ dostawca nie obsługuje transakcji.
Indeksowanie jako ścieżka dostępu
Program SQL Server próbuje pobrać dane przy użyciu indeksów dostawcy. Domyślnie indeksy są używane tylko dla metadanych i nigdy nie są otwierane
Nie zezwalaj na dostęp ad hoc
Program SQL Server nie zezwala na dostęp ad hoc za pośrednictwem funkcji OPENROWSET i OPENDATASOURCE względem dostawcy OLE DB. Jeśli ta opcja nie jest ustawiona, program SQL Server również nie zezwala na dostęp ad hoc.
Obsługuje operator "Like"
Wskazuje, że dostawca obsługuje zapytania przy użyciu słowa kluczowego
LIKE.
Tworzenie serwera połączonego przy użyciu Transact-SQL
Aby utworzyć serwer połączony przy użyciu języka Transact-SQL, użyj instrukcji sp_addlinkedserver, CREATE LOGIN i sp_addlinkedsrvlogin .
W tym przykładzie tworzony jest serwer połączony z innym wystąpieniem programu SQL Server przy użyciu języka Transact-SQL:
W Edytorze zapytań wprowadź następujące polecenie Transact-SQL, aby połączyć się z wystąpieniem programu SQL Server o nazwie
SRVR002\ACCTG:USE [master]; GO EXECUTE master.dbo.sp_addlinkedserver @server = N'SRVR002\ACCTG', @srvproduct = N'SQL Server'; GOWykonaj następujący kod, aby skonfigurować serwer połączony do używania poświadczeń domeny logowania używającego serwera połączonego.
EXECUTE master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'SRVR002\ACCTG', @locallogin = NULL, @useself = N'True'; GO
Kroki do wykonania po utworzeniu połączonego serwera
Poniższe kroki ułatwiają weryfikację serwera połączonego.
Testowanie serwera połączonego
Biorąc pod uwagę jedną z następujących dwóch metod testowania uwierzytelniania połączonego serwera w bieżącym kontekście zabezpieczeń.
Aby przetestować możliwość nawiązania połączenia z połączonym serwerem w programie SSMS, przejdź do połączonego serwera w Eksploratorze obiektów, kliknij prawym przyciskiem myszy połączony serwer, a następnie wybierz polecenie Testuj połączenie.
Aby przetestować możliwość nawiązania połączenia z połączonym serwerem w języku T-SQL, wykonaj podstawową instrukcję, na przykład, aby pobrać podstawowe
SELECTinformacje o katalogu bazy danych. Ten przykład zwraca nazwy baz danych na połączonym serwerze.SELECT name FROM [SRVR002\ACCTG].master.sys.databases; GO
Łączenie tabel z serwera połączonego
Użyj nazw czterech części, aby odwoływać się do obiektu na serwerze połączonym. Wykonaj następujący kod, aby zwrócić listę wszystkich identyfikatorów logowania na serwerze lokalnym i ich pasujących identyfikatorów logowania na serwerze połączonym.
SELECT local.name AS LocalLogins,
linked.name AS LinkedLogins
FROM master.sys.server_principals AS local
LEFT OUTER JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked
ON local.name = linked.name;
GO
Gdy NULL zostanie zwrócona nazwa logowania serwera połączonego, oznacza to, że nazwa logowania nie istnieje na połączonym serwerze. Te loginy nie mogą używać połączonego serwera, chyba że połączony serwer jest skonfigurowany do przekazywania innego kontekstu zabezpieczeń lub akceptuje połączenia anonimowe.
Połączone serwery z usługą Azure SQL Managed Instance
Jeśli używasz usługi Azure SQL Managed Instance, zapoznaj się z następującymi przykładami z sp_addlinkedserver: