Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criar um servidor vinculado entre dois contêineres do Docker executando o SQL Server (exemplo T-SQL)


Este artigo percorre o processo de criação de um servidor vinculado de uma instância do SQL Server em um contêiner do Docker para uma instância do SQL Server em outro contêiner do Docker. Ambos os contêineres do Docker estão na mesma máquina.

O processo é exatamente o mesmo que você usaria para criar qualquer servidor vinculado (por exemplo, mesmo que as instâncias do SQL Server estivessem em máquinas separadas e não fossem executadas em um contêiner do Docker).

Todos os exemplos aqui usam Transact-SQL. Isso permite que você crie o servidor vinculado sem depender de uma interface gráfica do usuário (como SSMS).


Criar o servidor vinculado


Para criar um servidor vinculado usando T-SQL, execute o sp_addlinkedserver procedimento armazenado ao passar o nome do servidor vinculado, bem como sua origem.

Aqui está um exemplo de criação de um servidor vinculado:
EXEC sp_addlinkedserver 
    @server=N'Homer', 
    @srvproduct=N'', 
    @provider=N'MSOLEDBSQL', 
    @datasrc=N'172.17.0.2,1433';

Nesse caso, o nome do servidor vinculado é Homer e eu especifico o endereço IP do contêiner do Docker, seguido pela porta TCP. Altere o nome do servidor e o endereço/porta IP conforme necessário.

Você pode encontrar o endereço IP do seu contêiner do Docker executando o seguinte código em uma janela de terminal:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' Homer

Se isso não funcionar, tente o método mais antigo:
docker inspect -f"{{.NetworkSettings.IPAddress}}" Homer

Altere o nome do contêiner conforme necessário.

Testar o servidor vinculado


Agora que você adicionou o servidor vinculado, você pode usar sp_testlinkedserver para testá-lo:
EXEC sp_testlinkedserver Homer;

Resultado (se for bem sucedido):
Commands completed successfully.

Falha no login?


Se você receber um erro "Falha no login", é provável que você não tenha um login correspondente no servidor remoto. Você precisará ter um login correspondente com as mesmas credenciais do servidor local.

Como alternativa, você pode criar um login separado apenas para o servidor vinculado.

Consulte Criar um servidor vinculado no SQL Server (exemplo T-SQL) para obter mais detalhes e exemplos de como fazer isso. Esse artigo usa os mesmos detalhes para o servidor vinculado que os deste artigo. Ele também tem um exemplo de execução de uma consulta distribuída e uma consulta de passagem no servidor vinculado depois de configurado.

Eliminar um servidor vinculado


Aqui está um exemplo de como descartar o servidor vinculado chamado “Homer” e todos os logins associados.
EXEC sp_dropserver 'Homer', 'droplogins';

Os droplogins O argumento é opcional, mas se você não especificar isso ao descartar um servidor vinculado que tenha entradas de login de servidor remoto e vinculado ou estiver configurado como um editor de replicação, uma mensagem de erro será retornada.

Consulte Remover um servidor vinculado usando T-SQL para obter mais exemplos.