Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Erstellen eines Verbindungsservers zwischen zwei Docker-Containern, auf denen SQL Server ausgeführt wird (T-SQL-Beispiel)

Dieser Artikel führt Sie durch den Prozess zum Erstellen eines Verbindungsservers von einer SQL Server-Instanz in einem Docker-Container zu einer SQL Server-Instanz in einem anderen Docker-Container. Beide Docker-Container befinden sich auf derselben Maschine.

Der Prozess ist genau der gleiche, den Sie zum Erstellen eines beliebigen Verbindungsservers verwenden würden (z. B. selbst wenn sich die SQL Server-Instanzen auf separaten Computern befinden und nicht in einem Docker-Container ausgeführt werden).

Alle Beispiele hier verwenden Transact-SQL. Dadurch können Sie den Verbindungsserver erstellen, ohne auf eine grafische Benutzeroberfläche (z. B. SSMS) angewiesen zu sein.

Erstellen Sie den Verbindungsserver

Um einen Verbindungsserver mit T-SQL zu erstellen, führen Sie sp_addlinkedserver aus gespeicherte Prozedur, während der Name des Verbindungsservers sowie seine Quelle übergeben werden.

Hier ist ein Beispiel für die Erstellung eines Verbindungsservers:

EXEC sp_addlinkedserver 
    @server=N'Homer', 
    @srvproduct=N'', 
    @provider=N'MSOLEDBSQL', 
    @datasrc=N'172.17.0.2,1433';

In diesem Fall lautet der Name des verknüpften Servers Homer und ich gebe die IP-Adresse des Docker-Containers an, gefolgt vom TCP-Port. Ändern Sie den Servernamen und die IP-Adresse/den Port nach Bedarf.

Sie können die IP-Adresse Ihres Docker-Containers finden, indem Sie den folgenden Code in einem Terminalfenster ausführen:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' Homer

Wenn das nicht funktioniert, versuchen Sie es mit der älteren Methode:

docker inspect -f"{{.NetworkSettings.IPAddress}}" Homer

Ändern Sie den Containernamen nach Bedarf.

Testen Sie den Verbindungsserver

Nachdem Sie den Verbindungsserver hinzugefügt haben, können Sie sp_testlinkedserver verwenden um es zu testen:

EXEC sp_testlinkedserver Homer;

Ergebnis (bei Erfolg):

Commands completed successfully.

Anmeldung fehlgeschlagen?

Wenn Sie die Fehlermeldung „Anmeldung fehlgeschlagen“ erhalten, haben Sie wahrscheinlich keine entsprechende Anmeldung auf dem Remote-Server. Sie benötigen ein entsprechendes Login mit denselben Anmeldeinformationen wie auf dem lokalen Server.

Alternativ könnten Sie ein separates Login nur für den verknüpften Server erstellen.

Weitere Einzelheiten und Beispiele dazu finden Sie unter Erstellen eines Verbindungsservers in SQL Server (T-SQL-Beispiel). Dieser Artikel verwendet die gleichen Details für den Verbindungsserver wie die in diesem Artikel. Es enthält auch ein Beispiel für die Ausführung einer verteilten Abfrage und einer Pass-Through-Abfrage auf dem Verbindungsserver, sobald dieser konfiguriert wurde.

Einen verknüpften Server löschen

Hier ist ein Beispiel für das Löschen des Verbindungsservers namens „Homer“ und aller zugehörigen Anmeldungen.

EXEC sp_dropserver 'Homer', 'droplogins';

Die droplogins Das Argument ist optional, aber wenn Sie dies nicht angeben, wenn Sie einen Verbindungsserver löschen, der zugeordnete Remote- und Verbindungsserver-Anmeldeeinträge hat oder als Replikationsherausgeber konfiguriert ist, wird eine Fehlermeldung zurückgegeben.

Weitere Beispiele finden Sie unter Entfernen eines Verbindungsservers mit T-SQL.