Uma demanda que nos surgiu foi criar um vínculo entre dois servidores de banco de dados para que possam trocar informações; o SQL Server seria o banco de dados principal na sede da empresa (local) e o banco de dados MySQL é o seu banco de dados na internet para o e-commerce.

Passo a passo da criação do "Linked Server":

  • Logar no banco de dados SQL Server com o usuário que também será mapeado num usuário no banco de dados MySQL;
  • No banco de dados SQL Server, ir em "Objetos de Servidor" --> "Servidores Vínculados" --> "Provedores" --> "MSDASQL", com o botão direito do Mouse selecione propriedades e marque as seguintes:
  • Criar uma fonte de dados ODBC para o banco de dados remoto MySQL (pode-se baixar o aplicativo em MySQL :: Download Connector/ODBC) , vá em  "Painel de Controle" --> "Sistemas e Segurança" --> "Ferramentas Administrativas" --> "Fontes de Dados ODBC (64 bits)" -- "DNS de Sistemas" --> "Adicionar" 

 

Realize o teste dessa conexão, para verificar se tudo está correto:

  •  Agora vamos criar um servidor vinculado (Linked Server) chamado "SER" utilizando essa conexão ODBC criada acima. a criação será através de um script (também pode ser realizado com a interface gráfica do MS Management Studio):

 

USE [master]
GO

/****** Object: LinkedServer [SER] Script Date: 03/01/2023 23:27:16 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'SER', @srvproduct=N'lojayii', @provider=N'MSDASQL', @datasrc=N'loja365', @provstr=N'DRIVER={MySQL ODBC 8.0 Unicode Driver}; Hostname=loja365.mysql.dbaas.com.br; PORT=3306; DATABASE=loja365; LogonID=lojayii; PASSWORD=tytttrrrW#1968'
/* For security reasons the linked server remote logins password is changed with ######## */


EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'SER',@useself=N'False',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'collation compatible', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'data access', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'dist', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'pub', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'rpc', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'rpc out', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'sub', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'connect timeout', @optvalue=N'0'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'collation name', @optvalue=null
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'lazy schema validation', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'query timeout', @optvalue=N'0'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'use remote collation', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'SER', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO

 

Com o botão direito do mouse sobre a nova conexão "SER" teste-a, se tudo ok vamos em frente:

  • com o botão direito do mouse sobre a nova conexão "SER" selecione propriedades e na nova tela selecione "Segurança"

 Mapeie o usuário do banco de dados SQL Server no usuário no banco de dados MySQL remoto, tudo pronto agora é só testar !

 

Referências:

[1] - OPENQUERY (Transact-SQL) - SQL Server | Microsoft Learn