sql >> Base de Datos >  >> RDS >> Sqlserver

Cree un servidor vinculado entre dos contenedores Docker que ejecutan SQL Server (ejemplo de T-SQL)

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.