Gerenciar servidores vinculados

Nesta página, você encontra informações sobre como gerenciar servidores vinculados na sua instância do Cloud SQL, incluindo registrar uma instância, adicionar um servidor vinculado e consultar um servidor vinculado.

Registre sua instância para permitir servidores vinculados

Para adicionar a sinalização cloudsql enable linked servers à 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 você quer usar para vincular servidores.

Para mais informações, consulte Configurar sinalizações do banco de dados.

Adicionar um servidor vinculado

Para adicionar um servidor vinculado, execute o 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'

Substitua:

  • LINKED_SERVER_NAME pelo nome do servidor vinculado que será criado.
  • TARGET_SERVER_ID pelo nome da rede, nome do DNS ou endereço IP do servidor vinculado. Para o nome da instância, use o formato servername\instancename. Se a 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 um usuário conectado, 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 vinculado.

Execute o comando a seguir para criar ou atualizar o login e a senha remotos padrão e aplicá-los a todos os logins locais:

EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @useself=N'False',
    @locallogin=N'LOGIN',
    @rmtuser=N'USER_ID',
    @rmtpassword='PASSWORD';

Substitua:

  • LINKED_SERVER_NAME pelo nome do servidor vinculado.
  • LOGIN pelo login do servidor local. locallogin é sysname, com um padrão NULL. NULL especifica que essa entrada se aplica a todos os logins locais que se conectam a rmtsrvname. Se não for NULL, locallogin é um login do SQL Server ou do Windows. Se você usa um login do Windows, ele precisa ter acesso ao SQL Server diretamente ou pela associação em um grupo do Windows que tenha acesso.
  • USER_ID pelo login do usuário.
  • PASSWORD pela senha do usuário.

Adicionar um servidor vinculado com uma conexão criptografada

Para adicionar um servidor vinculado usando uma conexão criptografada, execute o comando sp_addlinkedserver do Transact-SQL:

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:

  • LINKED_SERVER_NAME pelo nome do servidor vinculado que será criado.
  • TARGET_SERVER_ID pelo 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, será necessário indicar que o SQL Server pode confiar no certificado do servidor. Para atualizar a string do provedor, 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:

  • LINKED_SERVER_NAME pelo nome do servidor vinculado que será criado.
  • TARGET_SERVER_ID pelo nome do servidor de destino ou o endereço IP e o número da porta do servidor de destino.

Consultas de servidor vinculadas

O Cloud SQL suporta o uso de nomes de quatro partes para consultar servidores vinculados (nome do servidor, nome do banco de dados, nome do esquema e nome do objeto), além dos seguintes comandos:

  • OPENQUERY executa uma consulta em um servidor especificado.
  • EXECUTE, que permite executar o SQL dinâmico em um servidor vinculado.

Para mais informações, consulte Comparar opções de execução remota de consulta.

Ativar chamadas de procedimento remoto em um servidor vinculado

As chamadas de procedimento remoto (RPC) permitem executar procedimentos armazenados em servidores vinculados. Para adicionar a RPC, execute o comando sp_serveroption do Transact-SQL com um argumento RPC. Há dois argumentos de RPC:

  • rpc ativa a RPC a partir do servidor especificado.
  • rpc out ativa a RPC para o servidor especificado.

Use o comando sp_serveroption a seguir com o argumento rpc para ativar a RPC a partir de LINKED_SERVER_NAME:

EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='rpc',
    @optvalue='TRUE'

Substitua LINKED_SERVER_NAME pelo nome do servidor vinculado.

Use o comando sp_serveroption a seguir com o argumento rpc out para ativar a RPC:

EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='rpc out',
    @optvalue='TRUE'

Substitua LINKED_SERVER_NAME pelo nome do servidor vinculado.

Remover o mapeamento de usuários de um servidor vinculado

Para remover um mapeamento de usuário adicionado anteriormente, execute o seguinte comando:

EXEC master.dbo.sp_droplinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @locallogin=N'LOGIN';

Substitua:

  • LINKED_SERVER_NAME pelo nome do servidor vinculado a ser descartado.
  • LOGIN pelo login do servidor local. locallogin é sysname, com um padrão NULL. NULL especifica que essa entrada se aplica a todos os logins locais que se conectam a rmtsrvname. Se não for NULL, locallogin é um login do SQL Server ou do Windows. Se você usa um login do Windows, ele precisa ter acesso ao SQL Server diretamente ou pela associação em um grupo do Windows que tenha acesso.

Remover uma instância registrada de permitir servidores vinculados

Para remover os servidores vinculados, faça o seguinte:

  • Solte os servidores vinculados existentes com o procedimento armazenado sp_dropserver do Transact-SQL.
  • Remova a sinalização cloudsql enable linked servers para remover uma instância registrada.

    gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=off

    Substitua INSTANCE_NAME pelo nome da instância de que você quer remover os servidores vinculados.

    Como alternativa, é possível executar o seguinte comando para limpar todas as sinalizações do banco de dados:

    gcloud sql instances patch INSTANCE_NAME --clear-database-flags

    Substitua INSTANCE_NAME pelo nome da instância de que você quer remover os servidores vinculados.

Resolver problemas

Mensagem de erro Solução de problemas
Msg 7411, Level 16, State 1, Line 25

Server 'LINKED_SERVER_NAME' is not configured for DATA ACCESS.
A opção DataAccess está desativada. Execute o seguinte comando para ativar o acesso a dados:
EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='data access',
    @optvalue='TRUE'

Substitua LINKED_SERVER_NAME pelo nome do servidor vinculado.

Access to the remote server is denied because no login-mapping exists. (Microsoft SQL Server, Error: 7416) Se você tiver esse problema ao estabelecer uma conexão criptografada, será necessário tentar outra maneira de fornecer o ID do usuário ao acessar o servidor vinculado. Para isso, execute este 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:

  • LINKED_SERVER_NAME pelo nome do servidor vinculado.
  • TARGET_SERVER_ID pelo nome do servidor de destino ou o endereço IP e o número da porta do servidor de destino.
  • USER_ID pelo login do usuário.

A seguir