I server collegati ti consentono di leggere i dati ed eseguire comandi su database SQL Server esterni da Cloud SQL. Dopo aver registrato l'istanza, puoi configurare connessioni criptate, mappare gli accessi degli utenti ed eseguire query distribuite o chiamate di procedura remota (RPC).
Registra l'istanza per consentire i server collegati
Per aggiungere il flag cloudsql enable linked servers all'istanza, utilizza il seguente comando:
gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=on
Sostituisci INSTANCE_NAME con il nome dell'istanza
che vuoi utilizzare per collegare i server.
Per saperne di più, consulta Configura i flag di database.
Aggiungi un server collegato
Per aggiungere un server collegato, esegui il comando Transact-SQL sp_addlinkedserver:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'TARGET_SERVER_ID'
Sostituisci quanto segue:
- LINKED_SERVER_NAME con il nome del server collegato da creare.
- TARGET_SERVER_ID con il nome della rete, il nome DNS o l'indirizzo IP
del server collegato. Per il nome dell'istanza, utilizza il formato
servername\instancename. Se l'istanza utilizza una porta non standard, aggiungi il numero di porta. Ad esempio:servername\instancename, 8080.
Per aggiungere la mappatura utente per un utente che ha eseguito l'accesso, esegui questo comando:
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @useself=N'True'
Sostituisci LINKED_SERVER_NAME con il nome del server collegato.
Per creare o aggiornare l'accesso remoto e la password predefiniti e applicarli a tutti gli accessi locali, esegui questo comando:
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @useself=N'False', @locallogin=N'LOGIN', @rmtuser=N'USER_ID', @rmtpassword='PASSWORD';
Sostituisci quanto segue:
- LINKED_SERVER_NAME con il nome del server collegato.
- LOGIN con i dati di accesso del server locale.
localloginè sysname, con un valore predefinito NULL. NULL specifica che questa voce si applica a tutti gli accessi locali che si connettono armtsrvname. Se non è NULL,localloginè un login SQL Server o un login Windows. Se utilizzi un accesso Windows, questo deve avere accesso a SQL Server direttamente o tramite la sua appartenenza a un gruppo Windows che dispone dell'accesso. - USER_ID con l'utente che esegue l'accesso.
- PASSWORD con la password utente.
Aggiungi un server collegato con una connessione criptata
Per aggiungere un server collegato utilizzando una connessione criptata, esegui il comando Transact-SQL sp_addlinkedserver:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'TARGET_SERVER_ID, @provstr=N'Encrypt=yes;'
Sostituisci quanto segue:
- LINKED_SERVER_NAME con il nome del server collegato da creare.
- TARGET_SERVER_ID con il nome del server di destinazione o l'indirizzo IP e il numero di porta del server di destinazione.
Se il nome del server è diverso da quello nel certificato, devi indicare che SQL Server può considerare attendibile il certificato del server. Per aggiornare la stringa del provider, esegui questo comando:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'TARGET_SERVER_ID, @provstr=N'Encrypt=yes;TrustServerCertificate=yes;'
Sostituisci quanto segue:
- LINKED_SERVER_NAME con il nome del server collegato da creare.
- TARGET_SERVER_ID con il nome del server di destinazione o l'indirizzo IP e il numero di porta del server di destinazione.
Query del server collegato
Cloud SQL supporta l'utilizzo di nomi in quattro parti per eseguire query sui server collegati (nome server, nome database, nome schema e nome oggetto), oltre ai seguenti comandi:
- OPENQUERY esegue una query su un server specificato.
- EXECUTE consente di eseguire SQL dinamico su un server collegato.
Per saperne di più, consulta Confronta le opzioni di esecuzione remota delle query.
Abilita le chiamate di procedura remota su un server collegato
Le chiamate di procedura remota (RPC) consentono di eseguire stored procedure sui server collegati. Per aggiungere RPC, esegui il comando Transact-SQL sp_serveroption con un argomento RPC. Esistono due argomenti RPC:
rpcabilita l'RPC dal server specificato.rpc outabilita l'RPC al server specificato.
Utilizza il seguente comando sp_serveroption con l'argomento rpc per attivare
RPC da LINKED_SERVER_NAME:
EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='rpc', @optvalue='TRUE'
Sostituisci LINKED_SERVER_NAME con il nome del server collegato.
Utilizza il seguente comando sp_serveroption con l'argomento rpc out per attivare RPC:
EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='rpc out', @optvalue='TRUE'
Sostituisci LINKED_SERVER_NAME con il nome del server collegato.
Rimuovi la mappatura utente per un server collegato
Per rimuovere una mappatura utente aggiunta in precedenza, esegui questo comando:
EXEC master.dbo.sp_droplinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @locallogin=N'LOGIN';
Sostituisci quanto segue:
- LINKED_SERVER_NAME con il nome del server collegato da eliminare.
- LOGIN con i dati di accesso del server locale.
localloginè sysname, con un valore predefinito NULL. NULL specifica che questa voce si applica a tutti gli accessi locali che si connettono armtsrvname. Se non è NULL,localloginè un login SQL Server o un login Windows. Se utilizzi un accesso Windows, questo deve avere accesso a SQL Server direttamente o tramite la sua appartenenza a un gruppo Windows che dispone dell'accesso.
Rimuovi un'istanza registrata per non consentire i server collegati
Per rimuovere i server collegati:
- Elimina i server collegati esistenti con la stored procedure Transact-SQL sp_dropserver.
Rimuovi il flag
cloudsql enable linked serversper rimuovere un'istanza registrata.gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=off
Sostituisci
INSTANCE_NAMEcon il nome dell'istanza da cui vuoi rimuovere i server collegati.In alternativa, puoi eseguire questo comando per cancellare tutti i flag di database:
gcloud sql instances patch INSTANCE_NAME --clear-database-flags
Sostituisci
INSTANCE_NAMEcon il nome dell'istanza in cui vuoi rimuovere i server collegati.
Risoluzione dei problemi
| Problema | Risoluzione dei problemi |
|---|---|
Msg 7411, Level 16, State 1, Line 25
|
L'opzione DataAccess è disattivata. Esegui il seguente comando per abilitare l'accesso ai dati:EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='data access', @optvalue='TRUE' Sostituisci LINKED_SERVER_NAME con il nome del server collegato. |
Access to the remote server is denied because no
login-mapping exists. (Microsoft SQL Server, Error: 7416)
|
Se riscontri questo problema durante la creazione di una connessione criptata, devi provare un altro modo per fornire l'ID utente quando accedi al server collegato. Per farlo, esegui questo comando:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct= N'', @provider= N'MSOLEDBSQL', @datasrc= N'TARGET_SERVER_ID', @provstr= N'Encrypt=yes;TrustServerCertificate=yes;User ID=USER_ID' Sostituisci quanto segue:
|
| Comportamento imprevisto | Se riscontri un comportamento imprevisto, assicurati di utilizzare un provider supportato. Per saperne di più, consulta la documentazione di Microsoft. |
Passaggi successivi
- Scopri di più sull'utilizzo dei server collegati.