Esta página fornece informações sobre como gerir servidores associados na sua instância do Cloud SQL, incluindo a inscrição de uma instância, a adição de um servidor associado e a consulta de um servidor associado.
Inscreva a sua instância para permitir servidores associados
Para adicionar a flag cloudsql enable linked servers
à sua instância, use o seguinte comando:
gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=on
Substitua INSTANCE_NAME
pelo nome da instância que quer usar para associar servidores.
Para mais informações, consulte o artigo configure as flags da base de dados.
Adicione um servidor associado
Para adicionar um servidor ligado, execute o comando Transact-SQL sp_addlinkedserver
:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'TARGET_SERVER_ID'
Substitua o seguinte:
- LINKED_SERVER_NAME com o nome do servidor associado a criar.
- TARGET_SERVER_ID com o nome da rede, o nome DNS ou o endereço IP
para o servidor associado. Para o nome da instância, use o formato
servername\instancename
. Se a sua instância usar uma porta não padrão, adicione o número da porta. Por exemplo,servername\instancename, 8080
.
Para adicionar o mapeamento de utilizadores para um utilizador com sessão iniciada, execute o seguinte comando:
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @useself=N'True'
Substitua LINKED_SERVER_NAME pelo nome do servidor associado.
Para criar ou atualizar o início de sessão e a palavra-passe remotos predefinidos e aplicá-los a todos os inícios de sessão locais, execute o seguinte comando:
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @useself=N'False', @locallogin=N'LOGIN', @rmtuser=N'USER_ID', @rmtpassword='PASSWORD';
Substitua o seguinte:
- LINKED_SERVER_NAME com o nome do servidor associado.
- LOGIN com o início de sessão do servidor local.
locallogin
é sysname, com uma predefinição de NULL. NULL especifica que esta entrada se aplica a todos os inícios de sessão locais que se ligam armtsrvname
. Se não for NULL,locallogin
é um início de sessão do SQL Server ou um início de sessão do Windows. Se usar um início de sessão do Windows, este tem de ter acesso ao SQL Server diretamente ou através da respetiva associação a um grupo do Windows que tenha acesso. - USER_ID com o utilizador a iniciar sessão.
- PASSWORD com a palavra-passe do utilizador.
Adicione um servidor associado com uma ligação encriptada
Para adicionar um servidor associado através de uma ligação encriptada, execute o comando Transact-SQL
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;'
Substitua o seguinte:
- LINKED_SERVER_NAME com o nome do servidor associado a criar.
- TARGET_SERVER_ID com o nome do servidor de destino ou o endereço IP e o número da porta do servidor de destino.
Se o nome do servidor for diferente do nome no certificado, tem de indicar que o SQL Server pode confiar no certificado do servidor. Para atualizar a string do fornecedor, execute o seguinte 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;'
Substitua o seguinte:
- LINKED_SERVER_NAME com o nome do servidor associado a criar.
- TARGET_SERVER_ID com o nome do servidor de destino ou o endereço IP e o número da porta do servidor de destino.
Consultas de servidor associadas
O Cloud SQL suporta a utilização de nomes de quatro partes para consultar servidores associados (nome do servidor, nome da base de dados, nome do esquema e nome do objeto), além dos seguintes comandos:
- OPENQUERY executa uma consulta num servidor especificado.
- EXECUTE permite-lhe executar SQL dinâmico num servidor associado.
Para mais informações, consulte o artigo Compare as opções de execução remota de consultas.
Ative chamadas de procedimentos remotos num servidor associado
As chamadas de procedimento remoto (RPC) permitem-lhe executar procedimentos armazenados em servidores associados. Para adicionar RPC, execute o comando Transact-SQL sp_serveroption
com um argumento RPC. Existem dois argumentos RPC:
rpc
ativa o RPC a partir do servidor especificado.rpc out
permite a RPC para o servidor especificado.
Use o seguinte comando sp_serveroption
com o argumento rpc
para ativar o RPC de LINKED_SERVER_NAME:
EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='rpc', @optvalue='TRUE'
Substitua LINKED_SERVER_NAME pelo nome do servidor associado.
Use o seguinte comando sp_serveroption
com o argumento rpc out
para ativar o RPC:
EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='rpc out', @optvalue='TRUE'
Substitua LINKED_SERVER_NAME pelo nome do servidor associado.
Remova o mapeamento de utilizadores para um servidor associado
Para remover um mapeamento de utilizador que adicionou anteriormente, execute o seguinte comando:
EXEC master.dbo.sp_droplinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @locallogin=N'LOGIN';
Substitua o seguinte:
- LINKED_SERVER_NAME com o nome do servidor associado a eliminar.
- LOGIN com o início de sessão do servidor local.
locallogin
é sysname, com uma predefinição de NULL. NULL especifica que esta entrada se aplica a todos os inícios de sessão locais que se ligam armtsrvname
. Se não for NULL,locallogin
é um início de sessão do SQL Server ou um início de sessão do Windows. Se usar um início de sessão do Windows, este tem de ter acesso ao SQL Server diretamente ou através da respetiva associação a um grupo do Windows que tenha acesso.
Remova uma instância inscrita da permissão de servidores associados
Para remover servidores associados, faça o seguinte:
- Elimine os servidores associados existentes com o procedimento armazenado sp_dropserver do Transact-SQL.
Remova a flag
cloudsql enable linked servers
para remover uma instância inscrita.gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=off
Substitua
INSTANCE_NAME
pelo nome da instância onde quer remover os servidores associados.Em alternativa, pode executar o seguinte comando para limpar todas as flags da base de dados:
gcloud sql instances patch INSTANCE_NAME --clear-database-flags
Substitua
INSTANCE_NAME
pelo nome da instância onde quer remover os servidores associados.
Resolver problemas
Mensagem de erro | Resolução de problemas |
---|---|
Msg 7411, Level 16, State 1, Line 25
|
A opção DataAccess está desativada. Execute o
seguinte comando para ativar o acesso aos dados:EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='data access', @optvalue='TRUE' Substitua LINKED_SERVER_NAME pelo nome do servidor associado. |
Access to the remote server is denied because no
login-mapping exists. (Microsoft SQL Server, Error: 7416)
|
Se tiver este problema ao estabelecer uma ligação encriptada, tem de tentar outra forma de fornecer o ID do utilizador quando aceder ao servidor associado. Para o fazer, execute o seguinte 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' Substitua o seguinte:
|
O que se segue?
- Saiba como usar servidores associados.