Cet article décrit le processus de création d'un serveur lié à partir d'une instance SQL Server sur un conteneur Docker vers une instance SQL Server sur un autre conteneur Docker. Les deux conteneurs Docker sont sur la même machine.
Le processus est exactement le même que celui que vous utiliseriez pour créer n'importe quel serveur lié (par exemple, même si les instances SQL Server se trouvaient sur des machines distinctes et ne s'exécutaient pas dans un conteneur Docker).
Tous les exemples ici utilisent Transact-SQL. Cela vous permet de créer le serveur lié sans recourir à une interface utilisateur graphique (telle que SSMS).
Créer le serveur lié
Pour créer un serveur lié à l'aide de T-SQL, exécutez le sp_addlinkedserver
procédure stockée en passant le nom du serveur lié ainsi que sa source.
Voici un exemple de création d'un serveur lié :
EXEC sp_addlinkedserver @server=N'Homer', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'172.17.0.2,1433';
Dans ce cas, le nom du serveur lié est Homer et je spécifie l'adresse IP du conteneur Docker, suivie du port TCP. Modifiez le nom du serveur et l'adresse IP/le port selon vos besoins.
Vous pouvez trouver l'adresse IP de votre conteneur Docker en exécutant le code suivant dans une fenêtre de terminal :
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' Homer
Si cela ne fonctionne pas, essayez l'ancienne méthode :
docker inspect -f"{{.NetworkSettings.IPAddress}}" Homer
Modifiez le nom du conteneur si nécessaire.
Tester le serveur lié
Maintenant que vous avez ajouté le serveur lié, vous pouvez utiliser sp_testlinkedserver
pour le tester :
EXEC sp_testlinkedserver Homer;
Résultat (si réussi) :
Commands completed successfully.
Échec de la connexion ?
Si vous obtenez une erreur "Échec de la connexion", il est probable que vous n'ayez pas de connexion correspondante sur le serveur distant. Vous aurez besoin d'avoir une connexion correspondante avec les mêmes informations d'identification que celle sur le serveur local.
Vous pouvez également créer une connexion distincte uniquement pour le serveur lié.
Voir Créer un serveur lié dans SQL Server (exemple T-SQL) pour plus de détails et des exemples de réalisation. Cet article utilise les mêmes détails pour le serveur lié que ceux de cet article. Il contient également un exemple d'exécution d'une requête distribuée et d'une requête directe sur le serveur lié une fois qu'il a été configuré.
Supprimer un serveur lié
Voici un exemple de suppression du serveur lié appelé "Homer" et de toutes les connexions associées.
EXEC sp_dropserver 'Homer', 'droplogins';
Les droplogins
est facultatif, mais si vous ne le spécifiez pas lors de la suppression d'un serveur lié auquel sont associées des entrées de connexion de serveur distant et lié, ou qui est configuré en tant qu'éditeur de réplication, un message d'erreur est renvoyé.
Voir Supprimer un serveur lié à l'aide de T-SQL pour plus d'exemples.