Questo articolo illustra il processo di creazione di un server collegato da un'istanza di SQL Server in un contenitore Docker a un'istanza di SQL Server in un altro contenitore Docker. Entrambi i container Docker si trovano sulla stessa macchina.
Il processo è esattamente lo stesso che useresti per creare qualsiasi server collegato (ad esempio, anche se le istanze di SQL Server erano su macchine separate e non erano in esecuzione in un contenitore Docker).
Tutti gli esempi qui usano Transact-SQL. Ciò consente di creare il server collegato senza fare affidamento su un'interfaccia utente grafica (come SSMS).
Crea il server collegato
Per creare un server collegato utilizzando T-SQL, eseguire sp_addlinkedserver
stored procedure durante il passaggio del nome del server collegato e della sua origine.
Ecco un esempio di creazione di un server collegato:
EXEC sp_addlinkedserver @server=N'Homer', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'172.17.0.2,1433';
In questo caso, il nome del server collegato è Homer e specifico l'indirizzo IP del contenitore Docker, seguito dalla porta TCP. Modificare il nome del server e l'indirizzo IP/porta come richiesto.
Puoi trovare l'indirizzo IP del tuo container Docker eseguendo il codice seguente in una finestra di terminale:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' Homer
Se non funziona, prova il metodo precedente:
docker inspect -f"{{.NetworkSettings.IPAddress}}" Homer
Modifica il nome del contenitore come richiesto.
Testare il server collegato
Ora che hai aggiunto il server collegato, puoi utilizzare sp_testlinkedserver
per testarlo:
EXEC sp_testlinkedserver Homer;
Risultato (se riuscito):
Commands completed successfully.
Accesso non riuscito?
Se ricevi un errore "Accesso non riuscito", è probabile che tu non abbia un accesso corrispondente sul server remoto. Avrai bisogno di un login corrispondente con le stesse credenziali di quello sul server locale.
In alternativa, puoi creare un login separato solo per il server collegato.
Vedere Creare un server collegato in SQL Server (esempio T-SQL) per ulteriori dettagli ed esempi su come eseguire questa operazione. Quell'articolo usa gli stessi dettagli per il server collegato come quelli in questo articolo. Ha anche un esempio di esecuzione di una query distribuita e una query pass-through sul server collegato una volta che è stato configurato.
Elimina un server collegato
Ecco un esempio di eliminazione del server collegato chiamato "Homer" e di tutti gli accessi associati.
EXEC sp_dropserver 'Homer', 'droplogins';
I droplogins
l'argomento è facoltativo, ma se non lo si specifica quando si elimina un server collegato a cui sono associate voci di accesso al server collegato e remoto o è configurato come editore di replica, viene restituito un messaggio di errore.
Vedi Rimuovere un server collegato usando T-SQL per altri esempi.