W tym artykule opisano proces tworzenia połączonego serwera z wystąpienia programu SQL Server w jednym kontenerze platformy Docker do wystąpienia programu SQL Server w innym kontenerze platformy Docker. Oba kontenery Dockera znajdują się na tym samym komputerze.
Proces jest dokładnie taki sam, jak przy tworzeniu dowolnego połączonego serwera (na przykład, nawet jeśli instancje SQL Server znajdowały się na oddzielnych komputerach i nie działały w kontenerze Docker).
Wszystkie przykłady tutaj używają języka Transact-SQL. Umożliwia to tworzenie połączonego serwera bez polegania na graficznym interfejsie użytkownika (takim jak SSMS).
Utwórz połączony serwer
Aby utworzyć połączony serwer przy użyciu T-SQL, wykonaj sp_addlinkedserver
procedura składowana podczas przekazywania nazwy połączonego serwera oraz jego źródła.
Oto przykład tworzenia połączonego serwera:
EXEC sp_addlinkedserver @server=N'Homer', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'172.17.0.2,1433';
W tym przypadku nazwa serwera połączonego to Homer i określam adres IP kontenera Docker, a następnie port TCP. Zmień nazwę serwera i adres IP/port zgodnie z wymaganiami.
Możesz znaleźć adres IP swojego kontenera Docker, uruchamiając następujący kod w oknie terminala:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' Homer
Jeśli to nie zadziała, wypróbuj starszą metodę:
docker inspect -f"{{.NetworkSettings.IPAddress}}" Homer
Zmień nazwę kontenera zgodnie z wymaganiami.
Przetestuj połączony serwer
Teraz, gdy dodałeś połączony serwer, możesz użyć sp_testlinkedserver
aby to przetestować:
EXEC sp_testlinkedserver Homer;
Wynik (jeśli się powiedzie):
Commands completed successfully.
Logowanie nie powiodło się?
Jeśli pojawi się błąd „Logowanie nie powiodło się”, prawdopodobnie nie masz odpowiedniego loginu na zdalnym serwerze. Musisz mieć odpowiedni login z tymi samymi danymi uwierzytelniającymi, co na serwerze lokalnym.
Alternatywnie możesz utworzyć osobny login tylko dla połączonego serwera.
Zobacz Tworzenie serwera połączonego w programie SQL Server (przykład T-SQL), aby uzyskać więcej informacji i przykłady wykonania tego. Ten artykuł wykorzystuje te same szczegóły dotyczące połączonego serwera, co w tym artykule. Zawiera również przykład uruchamiania zapytania rozproszonego i zapytania przekazującego na połączonym serwerze po jego skonfigurowaniu.
Upuść połączony serwer
Oto przykład usunięcia połączonego serwera o nazwie „Homer” i wszystkich powiązanych loginów.
EXEC sp_dropserver 'Homer', 'droplogins';
droplogins
argument jest opcjonalny, ale jeśli nie określisz tego podczas upuszczania serwera połączonego, który ma skojarzone wpisy logowania serwera zdalnego i serwera połączonego lub jest skonfigurowany jako wydawca replikacji, zostanie zwrócony komunikat o błędzie.
Zobacz Usuwanie połączonego serwera za pomocą T-SQL, aby uzyskać więcej przykładów.