Este artículo explica el proceso de creación de un servidor vinculado desde una instancia de SQL Server en un contenedor de Docker a una instancia de SQL Server en otro contenedor de Docker. Ambos contenedores Docker están en la misma máquina.
El proceso es exactamente el mismo que usaría para crear cualquier servidor vinculado (por ejemplo, incluso si las instancias de SQL Server estuvieran en máquinas separadas y no se ejecutaran en un contenedor Docker).
Todos los ejemplos aquí usan Transact-SQL. Esto le permite crear el servidor vinculado sin depender de una interfaz gráfica de usuario (como SSMS).
Crear el servidor vinculado
Para crear un servidor vinculado usando T-SQL, ejecute sp_addlinkedserver
procedimiento almacenado al pasar el nombre del servidor vinculado, así como su fuente.
Este es un ejemplo de creación de un servidor vinculado:
EXEC sp_addlinkedserver @server=N'Homer', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'172.17.0.2,1433';
En este caso, el nombre del servidor vinculado es Homer y especifico la dirección IP del contenedor Docker, seguido del puerto TCP. Cambie el nombre del servidor y la dirección/puerto IP según sea necesario.
Puede encontrar la dirección IP de su contenedor Docker ejecutando el siguiente código en una ventana de terminal:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' Homer
Si eso no funciona, pruebe el método anterior:
docker inspect -f"{{.NetworkSettings.IPAddress}}" Homer
Cambie el nombre del contenedor según sea necesario.
Probar el servidor vinculado
Ahora que ha agregado el servidor vinculado, puede usar sp_testlinkedserver
para probarlo:
EXEC sp_testlinkedserver Homer;
Resultado (si tiene éxito):
Commands completed successfully.
¿Error al iniciar sesión?
Si obtiene un error de "Inicio de sesión fallido", es probable que no tenga un inicio de sesión correspondiente en el servidor remoto. Deberá tener un inicio de sesión correspondiente con las mismas credenciales que el del servidor local.
Alternativamente, puede crear un inicio de sesión separado solo para el servidor vinculado.
Consulte Crear un servidor vinculado en SQL Server (ejemplo de T-SQL) para obtener más detalles y ejemplos de cómo hacerlo. Ese artículo usa los mismos detalles para el servidor vinculado que los de este artículo. También tiene un ejemplo de ejecución de una consulta distribuida y una consulta de paso en el servidor vinculado una vez que se ha configurado.
Soltar un servidor vinculado
Aquí hay un ejemplo de cómo eliminar el servidor vinculado llamado "Homer" y todos los inicios de sesión asociados.
EXEC sp_dropserver 'Homer', 'droplogins';
Los droplogins
El argumento es opcional, pero si no especifica esto al descartar un servidor vinculado que tiene entradas de inicio de sesión de servidor vinculado y remotas asociadas, o está configurado como editor de replicación, se devuelve un mensaje de error.
Consulte Eliminar un servidor vinculado mediante T-SQL para obtener más ejemplos.