Questa pagina fornisce informazioni su come gestire i server collegati sui tuoi un'istanza Cloud SQL, inclusa la registrazione di un'istanza, l'aggiunta di un un server web ed eseguire query su un server collegato.
Registra l'istanza per consentire i server collegati
Per aggiungere il flag cloudsql enable linked servers
alla tua istanza, utilizza il metodo
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 ulteriori informazioni, consulta Configurare il database e i flag facoltativi.
Aggiungi un server collegato
Per aggiungere un server collegato, esegui il comando sp_addlinkedserver
Transact-SQL:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'SQLNCLI', @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
per il 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 di un utente che al momento 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 predefinito e la password e applicarli a tutti 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 le credenziali di accesso al 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 accesso SQL Server o Windows. Se utilizzi credenziali di accesso a Windows, deve avere accesso a SQL Server direttamente o appartenenza a un gruppo Windows che ha accesso. - USER_ID con l'utente che esegue l'accesso.
- PASSWORD con la password dell'utente.
Aggiungere un server collegato con una connessione criptata
Per aggiungere un server collegato utilizzando una connessione criptata, esegui Transact-SQL
Comando sp_addlinkedserver
:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'SQLNCLI', @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'IP l'indirizzo e il numero di porta per il 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 il seguente comando:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'SQLNCLI', @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 del server, nome del database, nome dello schema e nome dell'oggetto), oltre ai seguenti comandi:
- OPENQUERY esegue una query su un server specificato.
- EXECUTE consente di eseguire SQL dinamico su un server collegato.
Per ulteriori informazioni, consulta Confronta l'esecuzione remota delle query opzioni.
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 l'RPC, esegui il comando Transact-SQL
sp_serveroption
con un argomento RPC. Esistono due argomenti RPC:
rpc
abilita l'RPC dal server specificato.rpc out
abilita RPC per il server specificato.
Usa questo comando sp_serveroption
con l'argomento rpc
per abilitare
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 l'RPC:
EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='rpc out', @optvalue='TRUE'
Sostituisci LINKED_SERVER_NAME con il nome del server collegato.
Rimuovere la mappatura utente per un server collegato
Per rimuovere una mappatura utente aggiunta in precedenza, esegui il seguente 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 rilasciare.
- LOGIN con le credenziali di accesso per il 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 accesso SQL Server o Windows. Se utilizzi credenziali di accesso a Windows, deve avere accesso a SQL Server direttamente o appartenenza a un gruppo Windows che ha accesso.
Rimuovere un'istanza registrata dall'autorizzazione dei 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 servers
per rimuovere un'istanza registrata.gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=off
Sostituisci
INSTANCE_NAME
con il nome dell'istanza in cui vuoi rimuovere i server collegati.In alternativa, puoi eseguire il seguente comando per cancellare tutti i flag del database:
gcloud sql instances patch INSTANCE_NAME --clear-database-flags
Sostituisci
INSTANCE_NAME
con il nome dell'istanza in cui vuoi rimuovere i server collegati.
Risoluzione dei problemi
Messaggio di errore | 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 quando stabilisci una connessione
devi provare un altro metodo per fornire l'ID utente quando
per accedere al server collegato. Per farlo, esegui il seguente comando:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct= N'', @provider= N'SQLNCLI', @datasrc= N'TARGET_SERVER_ID', @provstr= N'Encrypt=yes;TrustServerCertificate=yes;User ID=USER_ID' Sostituisci quanto segue:
|
Passaggi successivi
- Scopri di più sull'utilizzo dei server collegati.